知识点:
冯诺依曼体系结构结构,它最核心的思想是存储程序计算机。
cpu通过总线与内存连接,依靠ip指针依次从内存中取出一条指令执行。
API:程序员与计算机的接口界面。
ABI:程序与CPU的接口界面。
寄存器、寻址方式和各类指令在学习《深入理解计算机》和《汇编》时已做了详细了解,不再赘述。
实验:
截图入下:
原代码为:
int g(int x)
{
return x+3;
}
int f(int x)
{
return g(x);
}
a
int main(void)
{
return f(8)+1;
}
汇编代码为:
g:
pushl %ebp
movl %esp, %ebp
movl 8(%ebp), %eax
addl $3, %eax
popl %ebp
ret
f:
pushl %ebp
movl %esp, %ebp
subl $4, %esp
movl 8(%ebp), %eax
movl %eax, (%esp)
call g
leave
ret
main:
pushl %ebp
movl %esp, %ebp
subl $4, %esp
movl $8, (%esp)
call f
addl $1, %eax
leave
ret
代码非常简单,只要记住
pushl %ebp 等价于 subl $4,%esp movl %ebp,(%esp)
leave 等价于 movl %ebp,%esp popl %ebp
popl %ebp 等价于 movl (%esp),%ebp addl $4
call是将返回地址也就是当前eip的值压入栈顶,然后跳转到函数的起始地址
ret弹出返回地址到eip继续执行下面的指令
计算机的工作原理:
就是按照程序的编排,cpu从内存中一个一个取出指令和数据并执行。
作者:胡御风
原创作品转载请注明出处
《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000