- 2
- 0
- 约2.14万字
- 约 19页
- 2017-07-09 发布于湖北
- 举报
Linux下的汇编与Windows汇编最大的不同就是第一个操作数是原操作数,第二个是目的操作数,而Windows下却是相反。
1、 基本操作指令
简单的操作数类型说明,一般有三种,
(1)立即数操作数,也就是常数值。立即数的书写方式是“$”后面跟一个整数,比如$0x1F,这个会在后面的具体分析中见到很多。
(2)寄存器操作数,它表示某个寄存器的内容,用符号Ea来表示任意寄存器a,用引用R[Ea]来表示它的值,这是将寄存器集合看成一个数组R,用寄存器表示符作为索引。
(3)操作数是存储器引用,它会根据计算出来的地址(通常称为有效地址)访问某个存储器位置。用符号Mb[Addr]表示对存储在存储器中从地址Addr开始的b字节值的引用。通常可以省略下标b。
图1表示有多种不同的寻址模式,一个立即数偏移Imm,一个基址寄存器Eb,一个变址或索引寄存器Ei和一个伸缩因子s。有效地址被计算为Imm+R[Eb]+R[Ei]*s,对于这中寻址方式,我们可以在数组或者结构体中进行对元素进行访问时会用到。
操作数类型
格式 操作数值 名称 立即数
$Imm Imm 立即数寻址 寄存器
Ea R[Ea] 寄存器寻址 寄存器
Imm M[Imm] 绝对寻址 寄存器
(Ea) M[R[Ea]] 间接寻址 寄存器
Imm(Eb) M[Imm+R[Eb]] (基址+偏移量)寻址 寄存器
原创力文档

文档评论(0)