运算器
CPU的两大构造是运算器和控制器。运算器主要完成指令的运算任务。包括加减乘除,与或异或左移右移等等。
今天将介绍加减乘除,取模运算符。
加法运算符
int main(void)
{
int a=11;
int b=22;
int c=a+b;
return c;
}
gcc 1.c
./a.out
echo $?
答案:
33
相应的汇编
.section .text
.globl main
main:
pushl %ebp
movl %esp,%ebp
subl $12,%esp
movl $11,-12(%ebp)
movl $22,-8(%ebp)
movl -12(%ebp),%eax
addl -8(%ebp),%eax
movl %eax,-4(%ebp)
movl -4(%ebp),%eax
movl %ebp,%esp
popl %ebp
ret
main函数以pushl %ebp movl %esp,%ebp 和 movl %ebp,%esp popl %ebp ret开始,结束。运行到subl $12,%esp前栈中的结构是
-12(%ebp)-> a
-8(%ebp)-> b
-4(%ebp)-> c
%ebp-> old %ebp
movl $11,-12(%ebp)
movl $22,-8(%ebp)
给a和b赋值。
movl -12(%ebp),%eax
addl -8(%ebp),%eax
movl %eax,-4(%ebp)
进行加法。
movl -1