您的位置:首页 > 其它

[Assembly] 程序的机器级表示(一)

2017-05-30 19:57 183 查看

数据格式

C声明Intel数据类型汇编代码后缀大小(字节)
char字节b1
shortw2
int双字l4
long四字q8
char *四字q8
float单精度s4
double双精度l8

寄存器

%r10w
主要用途64位寄存器名32位寄存器名16位寄存器名8位寄存器名
存储返回值%rax%eax%ax%al
被调用者保存%rbx%ebx%bx%bl
第四个参数%rcx%ecx%cx%cl
第三个参数%rdx%edx%dx%dl
第二个参数%rsi%esi%si%sil
第一个参数%rdi%edi%di%dil
被调用者保存%rbp%ebp%bp%bpl
栈指针%rsp%esp%sp%spl
第五个参数%r8%r8d%r8w%r8b
第六个参数%r9%r9d%r9w%r9b
调用者保存%r10%r10d%r10b
调用者保存%r11%r11d%r11w%r11b
被调用者保存%r12%r12d%r12w%r12b
被调用者保存%r13%r13d%r13w%r13b
被调用者保存%r14%r14d%r14w%r14b
被调用者保存%r15%r15d%r15w%r15b

操作数指示符

立即数:$ + C语言表示法的整数

如:
$ 0x2A
$3000


寄存器: % + 寄存器名

如:
%eax
%rbp


内存引用:
Imm(Rb, Ri, s)


其中Imm代表立即数,Rb是一个存储在寄存器中的偏移量,Ri也是存储在寄存器中的偏移量,S是Ri的偏移倍数(s必须是1、2、4、8),计算方法是:Imm + (Rb) + (Ri) * s。

如:
260(%rcx, %rdx)
(%rbx)


对于寄存器,
%rax
代表
%rax
寄存器存储的值,而
(%rax)
代表
%rax
寄存器指向的内存单元的值。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: