没有合适的资源?快使用搜索试试~ 我知道了~
首页计算机系统详解:优化、分类与指令集
计算机系统详解:优化、分类与指令集
需积分: 48 39 下载量 158 浏览量
更新于2023-03-03
1
收藏 11KB DOCX 举报
"深入理解计算机系统是一本经典的教材,它涵盖了计算机硬件和软件交互的深层次知识。本文档摘录了部分内容,主要探讨了以下几个关键知识点: 1. 位运算与整数表示:无符号数的截断到指定位数可通过模运算(x mod 2^k)实现。整数运算的效率差异显著,如乘法通常比加法慢,编译器会利用移位和加法优化乘法指令,比如用移位代替乘以2的幂。 2. 系统架构与指令集:讨论了IA-32(x86)和x86-64(x64)体系结构的区别,以及Intel的IA-64架构。同时介绍了编译系统的基本组成部分,包括预处理器、编译器、汇编器和链接器的工作流程。 3. SIMD并行计算:提到了单指令多数据(SIMD)并行处理,这是SSE指令集的基础,用于提高数据并行计算性能。 4. 数据类型和内存管理:在x64平台上,long和指针的大小都是8字节。无符号数右移使用逻辑右移,有符号数可能使用算术右移,且运算中数值类型转换有特定规则。 5. 浮点数处理:指出浮点数加法和乘法的运算特性,如它们不具备结合性和分配性。预处理器、编译器和汇编器在处理浮点数时的作用。 6. 寄存器和内存访问:寄存器既可以保存地址也可以保存值,汇编语言中括号用于明确地址或值的操作。栈和堆的存储机制也进行了说明。 7. 复杂指令如LEA:详细解释了LEA指令的灵活性,根据%edx的内容,它可以是地址计算或算术运算,这体现了汇编语言的底层原理。 通过这些知识点,读者能够深入了解计算机系统内部的工作原理,对硬件操作和编程优化有深入的理解。深入理解计算机系统不仅是程序员必备的技能,也是设计和优化现代软件系统的重要基础。"
资源详情
资源推荐
深入理解计算机系统答案
【篇一:深入理解计算机系统笔记】
(1)对于一个无符号数字 x,截断它到 k 位的结果就相当于计算 x mod2^k.
(2)在大多数的机器上,整数乘法指令相当地慢,需要 12 或者更多的始终周期,然而其他整
数运算-例如加法、减法、位移运算和移位-只需要 1 个时钟周期.因此,编译器使用的一
项重要的优化就是试着使用移位和加法运算的组合来代替乘以常数因子的乘法.
(3)在大多数的机器上,整数除法要比整数乘法更慢-需要 30 或者更多的始终周期.除以 2
的幂也可以用移位运算来实现,只不过我们用的是右移,而不是左移.对于无符号和二进制补
码数,分别使用逻辑移位和算术移位来达到目的.
1.注意系统的分类:主流的 ia32(也就是 x86),以及 x86-64(也就是 x64),还有种
intel 的与原 32 位系统不兼容的 ia64。
2.编译系统由预处理器,编译器,汇编器和链接器组成。
3.单指令多数据并行称为 simd 并行,其扩展为 sse 指令集。 4.x64 上 long 为 8 字节,
指针也为 8 字节。
5.无符号数右移必须采用逻辑右移,而有符号数一般采用算术右移。 6.有符号数遇见无
符号数会默认强转为无符号数。
7.short 转为 unsigned 时,是先扩展大小再符号转换。
8.补码非的计算:从左到右将第一个为 1 的位前的所有位取反。 9.负数的补码移位向下
舍入。
10.正浮点数能使用整数排序函数来进行排序。
11.浮点加法和乘法不具备结合性,浮点乘法在加法上不具备分配性。 12.预处理器扩展
源代码,然后编译器生成源代码的文本汇编代码,汇编器转成二进制汇编码,链接器生成
exe 或 dll 或 lib。
13.寄存器可以保存地址也可以保存值。注意汇编中的加括号表示为取该地址指向的值,
如(%eax)指%eax 中保存的地址指向的值。 14.传送指令的两个操作符不能都指向存储
器。
15.栈指针%esp 保存着栈顶元素的值,%eax 保存函数返回值。 16.栈从高地址往低地
址分配,堆从低地址往高地址分配。
17.注意:lea,假设为 leal 7(%edx, %eax, 4),则当%edx 中保存的是地址时,lea 为
取有效地址,而当%edx 中保存的是值时,lea
为算术运算,即 7 + %edx + %eax * 4。这儿的%eax 总保存值。说白了,其实 lea 一
直是在做计算,只是%edx 影响了直观表达而已。 18.注意:处理有无符号值的操作是通
过不同的汇编指令来区分的。 19.大多数汇编器根据一个循环的 do-while 形式来产生循
环代码,逆向工程会用到。
20.指令无视操作数的长度。
21.因为有个条件传送的优化策略,所以(xp ? *xp : 0)这条语句其实两个选择分支都会
执行。
22.32 位系统中,大多数栈中信息的访问其位置都是基于帧指针的。而 64 位系统中,栈
下载后可阅读完整内容,剩余6页未读,立即下载
待木成植
- 粉丝: 83
- 资源: 26
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 彩虹rain bow point鼠标指针压缩包使用指南
- C#开发的C++作业自动批改系统
- Java实战项目:城市公交查询系统及部署教程
- 深入掌握Spring Boot基础技巧与实践
- 基于SSM+Mysql的校园通讯录信息管理系统毕业设计源码
- 精选简历模板分享:简约大气,适用于应届生与在校生
- 个性化Windows桌面:自制图标大全指南
- 51单片机超声波测距项目源码解析
- 掌握SpringBoot实战:深度学习笔记解析
- 掌握Java基础语法的关键知识点
- SSM+mysql邮件管理系统毕业设计源码免费下载
- wkhtmltox下载困难?找到正确的安装包攻略
- Python全栈开发项目资源包 - 功能复刻与开发支持
- 即时消息分发系统架构设计:以tio为基础
- 基于SSM框架和MySQL的在线书城项目源码
- 认知OFDM技术在802.11标准中的项目实践
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功