《深入理解计算机系统》汇编指令大全&代码结构

指令集与数据处理详解
本文深入探讨了计算机指令集的细节,包括浮点数与整型指令的区别、寄存器使用、数据传送、取址及扩展、栈操作、运算、控制流程、条件码的作用与初始化、跳转指令的使用、浮点数计算以及汇编语言中if-else和while语句的翻译模版。通过实例解析,帮助读者理解并掌握汇编语言的高级应用。
指令后缀
12738065-a0fa52d5b9de2060.png
指令后缀

//浮点数与整型的l不会产生歧义,因为指令使用的完全不一样。

寄存器
12738065-4e5a82a66098cc0d.png
寄存器
数据传送
12738065-0eae58fb7c041b5d.png
数据传送
取址
12738065-852e1311f1e4ee0f.png
取址
数据扩展
12738065-6de40f9e3f61bb60.png
数据扩展
栈操作
12738065-f35761067361d598.png
栈操作
运算
12738065-e4268fa08b27c658.png
运算

//算数右移:补符号位。逻辑右移动:补0

控制

条件码:
  • CF:进位标志位,可用来检测无符号操作的溢出
  • ZF:零标志,最近操作所得为0.
  • SF:符号标志,最近操作所得为负数
  • OF:溢出标志,最近操作导致补码溢出(正溢出/负溢出)
比较
12738065-51878fed6c23bcea.png
比较

//注意cmp指令顺序:%rdi <= 2 则跳到.L4


12738065-9b73be0d995ac7f4.png
eg
条件码初始化
12738065-566c476a9eb5bd33.png
条件码初始化
跳转
12738065-1f2ffe964b72a84c.png
跳转
传送
12738065-1707fc63f3438580.png
传送

//使用时,前面搭配cmp指令

浮点数

浮点数寄存器
12738065-aa623f612fa6cd20.png
浮点数寄存器
浮点数传输指令
12738065-862000dc8e65cb1f.png
浮点数传输

eg.


12738065-fa9cc3e11d40a25a.png
例子
符点数计算
12738065-aebbcf387100356f.png
浮点数计算

语句汇编翻译模版

if-else汇编模版:
12738065-2a74769eaa06886f.png
if-else
while的三种翻译方法:

1、 do-while


12738065-b44cfb454ec75214.png
do-while

2、 跳转到中间的翻译方法


12738065-a9a44af39a109ba4.png
跳转到中间

3、 guarded-do翻译方法(选择较高优化等级条件时)


12738065-395946c5810528c5.png
guarded-do

Reference

[1] Randal E. Bryant, David R. O'Halla. MATLAB神经网络30例 [M].北京:电子工业出版社,2014,12-16

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值