第三章、汇编2

算术逻辑操作

加载有效地址

leaq 这个指令是烦人的,leaq (address), %rax, 首先(address)表示获取某个地址的值,而leaq(load effective address)又是去取得一个值的地址(&value),那么取得的结果就是address, 所以本质就是把address放到寄存器中。这个好处是可以利用一些简单的加法和乘法,减少指令个数。可以做一下书里的练习题。

一元和二元操作

  • inc
  • dec
  • neg
  • not

移位操作

特殊算术操作

控制

条件码

访问条件码

跳转指令

这里有个疑惑记录一下,140页书里有一行代码:7f f8 // jg 5

跳转指令相对位置编码很好理解,但是书里把0xf8翻译成-8我就很不理解,

问:为啥反汇编的话这么确定就把这个二进制当作补码处理来翻译?

查阅资料有人说汇编后的二进制数都是补码,这个姑且先这么看,权威资料没查到。

问:如果0xf8被翻译成-8,那么248这个数值二进制咋表示?

chat-gpt解释如下:其实jmp分为相对短跳转(short jump)和相对长跳转(near jump),二者的汇编虽然都是用jmp这三个字母,但是汇编器会根据输入立即数的大小翻译成不同的二进制, 指令分别被翻译EB(短跳转) 和 E9(长跳转), 二者立即数范围分别是1字节(-128~+127)和4字节 (-2,147,483,648 ~ +2,147,483,647)。举个例子:

  1. jmp $4096 最后会被汇编器翻译成:
    E9 00 00 10 00(小端机器)
  2. jmp $-8 最后会被汇编器翻译成:
    EB f8
  3. jmp $248 最后会被汇编器翻译成:
    E9 f8 00 00 00 (小端机器)

跳转指令的编码

用条件控制来实现条件分支

用条件传送来实现条件分支

switch语句

相关推荐
小雪崩8 小时前
嵌入式学习 day60:ARM汇编——触摸屏与SPI
汇编·arm开发·学习
额额额对了9 小时前
SPI通信
linux·c语言·汇编·单片机·嵌入式硬件·arm
AOI小白新手上路15 小时前
4-3_ARM汇编_学习笔记
汇编·arm开发·学习
AC赳赳老秦1 天前
公开音频转写信息提取:OpenClaw 处理发布会与听证会文本并提取核心决策信息
大数据·开发语言·汇编·数据库·人工智能·deepseek·openclaw
AC赳赳老秦2 天前
财报附注表格精准提取:OpenClaw 从 PDF 年报附注挖掘隐藏明细,补齐财务分析维度
java·汇编·c++·python·青少年编程·deepseek·openclaw
AC赳赳老秦2 天前
公开 CSV 数据集批量处理实战:用 OpenClaw 高效完成下载、清洗与标准化分析样本生成
java·开发语言·汇编·c++·python·deepseek·openclaw
斑马13911 天前
ARM学习笔记(二)——ARM汇编基础
汇编·arm开发·arm
wechatbot88811 天前
【极客互动】企业微信Spring Boot 调度 SearchContact开发自动添加外部联系人网关
汇编·微信·自动化·企业微信·rpa
星栖与芯12 天前
LiteOS-M 切换汇编逐行图解(5):HalPendSV 任务切换的现场搬运(五阶段逐行)
汇编·stm32·嵌入式硬件·harmonyos
星栖与芯12 天前
LiteOS-M 切换汇编逐行图解(4):中断三件套与 HalTaskSchedule 触发
汇编·stm32·单片机·嵌入式硬件·harmonyos