深入理解计算机系统:乘法、移位与并行计算
5星 · 超过95%的资源 需积分: 50 56 浏览量
更新于2024-07-23
4
收藏 6.93MB DOC 举报
"深入理解计算机系统笔记"
这篇笔记主要涵盖了计算机系统的基础知识,包括数值运算、硬件特性、数据类型转换、编程语言处理以及内存管理等多个方面。以下是详细的知识点解析:
1. 数值运算:
- 无符号数的截断可以通过计算x mod 2^k来实现,其中k是保留的位数。
- 整数乘法通常比其他基本运算(如加法、减法、位移)慢,因此编译器会尝试用移位和加法替代乘法进行优化。
- 整数除法比乘法更慢,但除以2的幂可以用右移来代替,无符号数使用逻辑右移,有符号数使用算术右移。
2. 计算机系统架构:
- IA32和x86-64(x64)是常见的处理器架构,IA64与32位系统不兼容。
- 在x64架构下,`long`和指针都是8字节。
3. 编译过程:
- 编译系统由预处理器、编译器、汇编器和链接器四个部分组成,分别负责不同的任务,最终生成可执行文件。
4. 并行计算:
- SIMD(单指令多数据)并行性,如SSE指令集,用于提升处理向量数据的效率。
5. 数据类型转换:
- 有符号数遇到无符号数会自动转换为无符号数。
- `short`转换为`unsigned`时,先扩展大小再进行符号转换。
6. 补码运算:
- 负数的补码移位会向下舍入。
- 计算补码非是从左到右找到第一个1之前的所有位取反。
7. 浮点数运算:
- 浮点加法和乘法不具有结合性,乘法在加法上也不具有分配性。
- 正浮点数可以直接用整数排序函数进行排序。
8. 汇编语言:
- 寄存器既可以保存地址也可以保存值,括号表示取地址指向的值。
- 传送指令中不能同时有两个内存操作数。
- 栈指针 `%esp` 存储栈顶元素的地址, `%eax` 通常用于保存函数返回值。
- LEA指令用于计算有效地址,它可以做简单的算术运算,具体行为取决于操作数的含义。
这些笔记内容覆盖了计算机系统的基础概念,对理解和优化程序性能非常有帮助。深入理解这些知识能够使开发者编写出更高效、更适合硬件的代码。
2017-10-09 上传
2009-03-21 上传
2021-12-17 上传
2023-12-24 上传
2021-05-11 上传
2008-09-25 上传
mnmlist_tata
- 粉丝: 274
- 资源: 3
最新资源
- 前端协作项目:发布猜图游戏功能与待修复事项
- Spring框架REST服务开发实践指南
- ALU课设实现基础与高级运算功能
- 深入了解STK:C++音频信号处理综合工具套件
- 华中科技大学电信学院软件无线电实验资料汇总
- CGSN数据解析与集成验证工具集:Python和Shell脚本
- Java实现的远程视频会议系统开发教程
- Change-OEM: 用Java修改Windows OEM信息与Logo
- cmnd:文本到远程API的桥接平台开发
- 解决BIOS刷写错误28:PRR.exe的应用与效果
- 深度学习对抗攻击库:adversarial_robustness_toolbox 1.10.0
- Win7系统CP2102驱动下载与安装指南
- 深入理解Java中的函数式编程技巧
- GY-906 MLX90614ESF传感器模块温度采集应用资料
- Adversarial Robustness Toolbox 1.15.1 工具包安装教程
- GNU Radio的供应商中立SDR开发包:gr-sdr介绍