目录 Table of Contents
汇编程序员眼中的系统结构
汇编程序员眼中的系统结构_
如何从 C 代码生成汇编代码
int sum(int x, int y)
{
int t = x + y;
return t;
}
很简单的代码, 下面就是生成的对应的 X86-32 汇编代码 (AT&T 汇编指令)
sum :
pushl %ebp
movl %exp, %ebp
movl 12(%ebp), %eax
addl 8(%ebp), %eax
movl %ebp, %esp
popl %ebp
ret
如何生成汇编代码 ?
gcc -o2 -S code.c -m32 -fno-omit-frame-pointer
-S 就是把源代码序编译成一个 .s 汇编代码. -m32 是让编译器生成 32 位代码.
汇编语言的数据格式
AT&T 汇编代码, 刚才的指令后面加上了 l
. 这就是说, 我这条指令的操作数, 可以是字节, 也可以是字, 也可以是双字.
在 X86-32 中, 使用 "字(word)" 来表示 16 位整数类型, "双字" 表示 32 位.
汇编语言指令所处理的数据类型, 一般是采用汇编指令后缀来进行区分.