[Assembly] 程序的机器级表示(一)
2017-05-30 19:57
183 查看
数据格式
C声明 | Intel数据类型 | 汇编代码后缀 | 大小(字节) |
---|---|---|---|
char | 字节 | b | 1 |
short | 字 | w | 2 |
int | 双字 | l | 4 |
long | 四字 | q | 8 |
char * | 四字 | q | 8 |
float | 单精度 | s | 4 |
double | 双精度 | l | 8 |
寄存器
主要用途 | 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 | %r10w%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寄存器指向的内存单元的值。
相关文章推荐
- [Assembly] 程序的机器级表示(三):栈指令、算术和逻辑指令
- [Assembly] 程序的机器级表示(二):数据传输指令
- 03程序的机器级表示
- Linux系统学习笔记:程序的机器级表示
- 程序的机器级表示 (5)
- CSAPP读书笔记——程序的机器级表示之条件跳转与循环
- 深入理解计算机系统--程序的机器级表示
- 程序的机器级表示——《深入理解计算机系统》
- 程序的机器级表示——基础
- 程序的机器级表示
- 程序的机器级表示(三)
- 程序的机器级表示(一)(关于程序员,这些汇编知识就够了)
- 深入理解计算机系统(笔记):程序的机器级表示
- 写一个程序判断机器的的数据表示采用的是大端还是小端?
- 程序的机器级表示 (2)
- 深入理解计算机系统——第03章——程序的机器级表示
- 深入理解计算机系统(三)之程序的机器级表示
- 20135328-信息安全系统设计基础第五周学习总结(程序的机器级表示)
- 程序的机器级表示 第四周10.5~10.11
- CSAPP读书笔记——程序的机器级表示之寄存器分布与mov指令集