《深入理解计算机系统》汇编指令大全&代码结构
2019-01-01 本文已影响250人
CSDN_georgeChen
指令后缀
![](https://img.haomeiwen.com/i12738065/a0fa52d5b9de2060.png)
//浮点数与整型的l不会产生歧义,因为指令使用的完全不一样。
寄存器
![](https://img.haomeiwen.com/i12738065/4e5a82a66098cc0d.png)
数据传送
![](https://img.haomeiwen.com/i12738065/0eae58fb7c041b5d.png)
取址
![](https://img.haomeiwen.com/i12738065/852e1311f1e4ee0f.png)
数据扩展
![](https://img.haomeiwen.com/i12738065/6de40f9e3f61bb60.png)
栈操作
![](https://img.haomeiwen.com/i12738065/f35761067361d598.png)
运算
![](https://img.haomeiwen.com/i12738065/e4268fa08b27c658.png)
//算数右移:补符号位。逻辑右移动:补0
控制
条件码:
- CF:进位标志位,可用来检测无符号操作的溢出
- ZF:零标志,最近操作所得为0.
- SF:符号标志,最近操作所得为负数
- OF:溢出标志,最近操作导致补码溢出(正溢出/负溢出)
比较
![](https://img.haomeiwen.com/i12738065/51878fed6c23bcea.png)
//注意cmp指令顺序:%rdi <= 2 则跳到.L4
![](https://img.haomeiwen.com/i12738065/9b73be0d995ac7f4.png)
条件码初始化
![](https://img.haomeiwen.com/i12738065/566c476a9eb5bd33.png)
跳转
![](https://img.haomeiwen.com/i12738065/1f2ffe964b72a84c.png)
传送
![](https://img.haomeiwen.com/i12738065/1707fc63f3438580.png)
//使用时,前面搭配cmp指令
浮点数
浮点数寄存器
![](https://img.haomeiwen.com/i12738065/aa623f612fa6cd20.png)
浮点数传输指令
![](https://img.haomeiwen.com/i12738065/862000dc8e65cb1f.png)
eg.
![](https://img.haomeiwen.com/i12738065/fa9cc3e11d40a25a.png)
符点数计算
![](https://img.haomeiwen.com/i12738065/aebbcf387100356f.png)
语句汇编翻译模版
if-else汇编模版:
![](https://img.haomeiwen.com/i12738065/2a74769eaa06886f.png)
while的三种翻译方法:
1、 do-while
![](https://img.haomeiwen.com/i12738065/b44cfb454ec75214.png)
2、 跳转到中间的翻译方法
![](https://img.haomeiwen.com/i12738065/a9a44af39a109ba4.png)
3、 guarded-do翻译方法(选择较高优化等级条件时)
![](https://img.haomeiwen.com/i12738065/395946c5810528c5.png)
Reference
[1] Randal E. Bryant, David R. O'Halla. MATLAB神经网络30例 [M].北京:电子工业出版社,2014,12-16