- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
深入理解计算机系统答案
【篇一:深入理解计算机系统笔记】
对于一个无符号数字 x,截断它到 k 位的结果就相当于计算 x mod 2^k.
在大多数的机器上,整数乘法指令相当地慢,需要 12 或者更多的始终周期,然而其他整数运算-例如加法、减法、位移运算和移位-只需要 1 个时钟周期.因此,编译器使用的一项重要的优化就是试着使用移位和加法运算的组合来代替乘以常数因子的乘法.
在大多数的机器上,整数除法要比整数乘法更慢-需要 30 或者更多的始终周期.除以 2 的幂也可以用移位运算来实现,只不过我们用的是右移,而不是左移.对于无符号和二进制补码数,分别使用逻辑移位和 算术移位来达到目的.
注意系统的分类:主流的 ia32(也就是 x86),以及 x86-64(也就是x64),还有种 intel 的与原 32 位系统不兼容的 ia64。
编译系统由预处理器,编译器,汇编器和链接器组成。
单指令多数据并行称为 simd 并行,其扩展为 sse 指令集。
x64 上 long 为 8 字节,指针也为 8 字节。
无符号数右移必须采用逻辑右移,而有符号数一般采用算术右移。
有符号数遇见无符号数会默认强转为无符号数。7.short 转为 unsigned 时,是先扩展大小再符号转换。
补码非的计算:从左到右将第一个为 1 的位前的所有位取反。
负数的补码移位向下舍入。
正浮点数能使用整数排序函数来进行排序。
浮点加法和乘法不具备结合性,浮点乘法在加法上不具备分配性。
预处理器扩展源代码,然后编译器生成源代码的文本汇编代码, 汇编器转成二进制汇编码,链接器生成 exe 或 dll 或 lib。
寄存器可以保存地址也可以保存值。注意汇编中的加括号表示为 取该地址指向的值,如(%eax)指%eax 中保存的地址指向的值。14.传送指令的两个操作符不能都指向存储器。
栈指针%esp 保存着栈顶元素的值,%eax 保存函数返回值。
栈从高地址往低地址分配,堆从低地址往高地址分配。
注意:lea,假设为 leal 7(%edx, %eax, 4),则当%edx 中保存的是地址时,lea 为取有效地址,而当%edx 中保存的是值时,lea
为算术运算,即 7 + %edx + %eax * 4。这儿的%eax 总保存值。说白了,其实 lea 一直是在做计算,只是%edx 影响了直观表达而已。18.注意:处理有无符号值的操作是通过不同的汇编指令来区分的。
大多数汇编器根据一个循环的 do-while 形式来产生循环代码, 逆向工程会用到。
指令无视操作数的长度。
因为有个条件传送的优化策略,所以(xp ? *xp : 0)这条语句其实两个选择分支都会执行。
22.32 位系统中,大多数栈中信息的访问其位置都是基于帧指针的。 而 64 位系统中,栈的存储信息数已被弱化,所以无帧指针了。
访问某个局部变量的前提是该局部变量至少有个可引用的地址, 所以局部变量被保存在了栈中。
为了防止从效率低的存储器读写值时,可能因数据未对齐而造成 多次读写从而导致低性能,ia32 要求数据一定要对齐。编译器在编译时会强制对齐。
汇编指令 leave 等于俩 pop,效果一样,选择随意。pop 和push 在栈上分配空间的方式是直接栈指针减去或加上偏移量。26.指针之差等于 相差字节数 / 所指类型大小字节数。
寄存器不够用时会出现寄存器溢出,这时就必须有值被保存在栈 上了,一般是将只读变量放入栈。
gcc 会对局部 char 类型的缓冲区插入金丝雀保护代码。
在 c 中
内联汇编代码只能针对某一类机器。
sse2 引入浮点数面向寄存器的指令集,而不用基于栈的方法。
x64 能让汇编代码比 x32 少很多,但是实际性能提升不会很大。但是从改进上来说性能应该提升很大很大啊,为什么。。。难道是x32 已经被优化的变态了
注意 rep 有时当空操作使。
x64 中,栈空间向下 128 字节以内的区域仍可以被函数访问,该区域被 abi 称为红色地带。
浮点相关:把存储模型,指令和传递规则组合称为浮点体系结构。
逻辑门只是简单的响应输入的变化而已。
hcl 中,=只是表示用一个名字来称谓一个表达式。其类 switch
的表达中的”1:等“同于 switch 中的 default case。
寄存器文件上的读或写端口都分别成对,一个传 id,一个传内容。
访存阶段读写存储器,写回阶段将结果写到寄存器文件。
寄存器文件和数据存储器等都是当前时钟随意读,下一时钟统一 写入更新。即时钟控制状态元素的更新。
流水线即保持各单元在时钟周期内忙碌不已,一套流水线硬件供 多个流水线使用。
加载互锁和数据转发技术结合起来足以处理可能类型的数据冒险。
当流水线化的系统中出现多条指令引起的异常时,最深的指令
您可能关注的文档
最近下载
- 高热封强度耐135℃高温蒸煮的CPP膜及其制备方法.pdf VIP
- 物业交接表格-全.pdf VIP
- (高清版)DG∕TJ 08-2433B-2023 外墙保温一体化系统应用技术标准(现浇混凝土保温外墙).docx VIP
- GB8478-2020 铝合金门窗国家标准.pdf VIP
- 福建福州市八县市2024-2025高二上学期期中数学试卷及答案.pdf VIP
- 正确的员工考核评分表1.doc VIP
- 部编版三年级下册晋升职称无生试讲稿——22.我们奇妙的世界(1).docx VIP
- 《人工智能发展历程》课件.ppt VIP
- 十五规划PPT课件.pptx VIP
- 入党积极分子考试题库及答案.docx VIP
原创力文档


文档评论(0)