Advertisement

Linux汇编代码学, 反汇编简单C及分析汇编代码工作流程

阅读量:

经过的普通用户+如需引用或转载,请注明出处 + 《Linux内核分析》MOOC课程(https://mooc.study.163.com/course/USTC-1000029000)

现代计算机普遍采用了冯·诺依曼体系结构这一设计理念。其核心理念体现在程序由存储于内存中的指令驱动CPU运行的机制上,并通过eip(32位)寻址机制实现对内存的操作。这周课程深入学习了基于Linux系统的汇编语言(如AT&T汇编)等知识。

作为本周课程的一部分,在指导我们进行反汇编的过程中,请完成对一个简单C语言程序的反汇编操作;在完成该过程后深入分析其运行机制,并深入理解现代计算机的工作原理。

c语言代码

int g(int x)
{
return x+3;
}
int f(int y)
{
return g(y);
}
int main(void)
{return f(2)+4;
}

汇编代码及分析:使用gcc -S -o main.s main.c -m32生成32位的汇编文件main.s

删掉以点开头的代码,链接作用

g: 函数g
pushl %ebp 将ebp入栈 ,esp-4

movl %esp, %ebp 栈顶指针保存到ebp

以下是改写的文本

main:
pushl %ebp ebp入栈,esp-4

全部评论 (0)

还没有任何评论哟~