指令后缀
![12738065-a0fa52d5b9de2060.png](https://img-blog.csdnimg.cn/img_convert/8d76953ab781b0388fb8726ed2807ef4.png)
指令后缀
//浮点数与整型的l不会产生歧义,因为指令使用的完全不一样。
寄存器
![12738065-4e5a82a66098cc0d.png](https://img-blog.csdnimg.cn/img_convert/83b36c22500064b41b17b7fcb9751b29.png)
寄存器
数据传送
![12738065-0eae58fb7c041b5d.png](https://img-blog.csdnimg.cn/img_convert/d4ebe7acb98e6a5b1c5aa6aea80d7cb3.png)
数据传送
取址
![12738065-852e1311f1e4ee0f.png](https://img-blog.csdnimg.cn/img_convert/8f5361b0277b511bf0840b44d49c7bfe.png)
取址
数据扩展
![12738065-6de40f9e3f61bb60.png](https://img-blog.csdnimg.cn/img_convert/8799b2c64d680ca8b4d5841671933674.png)
数据扩展
栈操作
![12738065-f35761067361d598.png](https://img-blog.csdnimg.cn/img_convert/7938344f40a1d9bd1ac840e87a95b461.png)
栈操作
运算
![12738065-e4268fa08b27c658.png](https://img-blog.csdnimg.cn/img_convert/6ec6e13665ae46c5446d032fe2ebd477.png)
运算
//算数右移:补符号位。逻辑右移动:补0
控制
条件码:
- CF:进位标志位,可用来检测无符号操作的溢出
- ZF:零标志,最近操作所得为0.
- SF:符号标志,最近操作所得为负数
- OF:溢出标志,最近操作导致补码溢出(正溢出/负溢出)
比较
![12738065-51878fed6c23bcea.png](https://img-blog.csdnimg.cn/img_convert/597a4cd9e9809a8f8f8aaca580ee6765.png)
比较
//注意cmp指令顺序:%rdi <= 2 则跳到.L4
![12738065-9b73be0d995ac7f4.png](https://img-blog.csdnimg.cn/img_convert/7eef8bca929e1b1c17eacc3ffc161932.png)
eg
条件码初始化
![12738065-566c476a9eb5bd33.png](https://img-blog.csdnimg.cn/img_convert/49b5aded2e170ed79d12d00fc1a11f36.png)
条件码初始化
跳转
![12738065-1f2ffe964b72a84c.png](https://img-blog.csdnimg.cn/img_convert/81b48f0632a1263a9c273a1beec78675.png)
跳转
传送
![12738065-1707fc63f3438580.png](https://img-blog.csdnimg.cn/img_convert/2ef5f61bf3d0a5f3aad36b861cd46775.png)
传送
//使用时,前面搭配cmp指令
浮点数
浮点数寄存器
![12738065-aa623f612fa6cd20.png](https://img-blog.csdnimg.cn/img_convert/027f13c23f0881b532f55bcc7acb7f3b.png)
浮点数寄存器
浮点数传输指令
![12738065-862000dc8e65cb1f.png](https://img-blog.csdnimg.cn/img_convert/fe4262d59a3299bcc5dd1434b37e7ea1.png)
浮点数传输
eg.
![12738065-fa9cc3e11d40a25a.png](https://img-blog.csdnimg.cn/img_convert/d88041f5dd2a9a155f2e8a5a3b558bfd.png)
例子
符点数计算
![12738065-aebbcf387100356f.png](https://img-blog.csdnimg.cn/img_convert/579ddbd4c5186f3d0bbf56295277e9d4.png)
浮点数计算
语句汇编翻译模版
if-else汇编模版:
![12738065-2a74769eaa06886f.png](https://img-blog.csdnimg.cn/img_convert/11843a39abd499135e431b4c1155c172.png)
if-else
while的三种翻译方法:
1、 do-while
![12738065-b44cfb454ec75214.png](https://img-blog.csdnimg.cn/img_convert/b78502d71980ce3ad2ce16efcd72c2f4.png)
do-while
2、 跳转到中间的翻译方法
![12738065-a9a44af39a109ba4.png](https://img-blog.csdnimg.cn/img_convert/aa54dff06cc8b0c81d27605b22998bae.png)
跳转到中间
3、 guarded-do翻译方法(选择较高优化等级条件时)
![12738065-395946c5810528c5.png](https://img-blog.csdnimg.cn/img_convert/caf27fdd530284ad4091f14dfea627f8.png)
guarded-do
Reference
[1] Randal E. Bryant, David R. O'Halla. MATLAB神经网络30例 [M].北京:电子工业出版社,2014,12-16