简单汇编代码分析与基础

来源:互联网 发布:linux nano 显示行号 编辑:程序博客网 时间:2024/06/06 05:24

简单汇编代码分析与基础

comA

《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000

现代计算机中最常用的是冯诺依曼体系结构,这种体系结构的特点是:

1、计算机处理的数据和指令一律用二进制数表示

2、顺序执行程序

计算机运行过程中,把要执行的程序和处理的数据首先存入主存储器(内存),计算机执行程序时,将自动地并按顺序从主存储器中取出指令一条一条地执行,这一概念称作顺序执行程序。

3、计算机硬件由运算器、控制器、存储器、输入设备和输出设备五大部分组成。

汇编语言的一些基础知识:

subl执行减法操作

addl执行加法操作

ebp指向栈底(基地址)

esp指向栈顶

eax暂时存储一些数值。

leave指令等同于

movl %ebp,%esp

popl %ebp

enter指令等同于

pushl %ebp

movl %esp,%ebp


在linux系统下汇编一个简单的C语言文件,以及gcc汇编结果:


找出其中的汇编语句以后结果图:


汇编前的C语言代码是:


int g(int x)

{
return x + 3;

}

int f(int x)
{
  return g(x);
}


int main(void)
{
  return f(8) + 1;
}


汇编程序分析:

程序首先从main入口进入,形成一个栈。

将值1装入栈,调用f,f留出一段栈空间后调用g。

g将数值3压入栈,执行加法操作将3与8相加,将结果返回f。

f将值返回main,再将值与1相加,得到结果值入栈。

最后将栈中的结果弹出,得到最后结果。


0 0
原创粉丝点击