从C简单程序的汇编代码入手,以理解计算机工作原理。
来源:互联网 发布:天刀胡歌大叔捏脸数据 编辑:程序博客网 时间:2024/06/11 22:57
贺邦 原创作品转载请注明出处 《Linux内核分析》MOOC课程 http://mooc.study.163.com/course/USTC-1000029000#/info
知识准备
冯诺依曼体系结构
核心思想
1.冯诺依曼是:数字计算机的数制采用二进制;计算机应该按照程序顺序执行。
2.采用二进制作为计算机数值计算的基础,以0、1代表数值。不采用人类常用的十进制计数方法,二进制使得计算机容易实现数值的计算。
3.程序或指令的顺序执行,即预先编好程序,然后交给计算机按照程序中预先定义好的顺序进行数值计算。
汇编语言的五种寻址模式
· 寄存器寻址 registermode: %寄存器 例如:%edx 访问寄存器edx
· 立即寻址 immediate: $数字 例如:$0x123 数值0x123
· 直接寻址 direct:数字 例如:0x123访问地址0x123指向的内存
· 间接寻址 indirect: (%寄存器) (%ebx)例如:访问寄存器ebx中的地址指向的内存
· 变址寻址 displaced:偏移量(%寄存器) 4(%ebx):访问寄存器ebx中的地址再加4指向的内存;
几个重要的汇编指令
Example instruction
What it does
Pushl %eax
Subl $4, %esp //栈顶指针减4,栈在向下生长一个位置
Movl %eax, (%esp) //将eax中的值放入栈顶指针指向的内存位置
Popl %eax
Movl (%esp), %eax //从栈顶指针指向的内存中的值放入eax中
Addl $4, %esp //栈顶指针加4,栈在向上收缩
Call 0x12345
Pushl %eip //ip压栈
Movl $0x12345, %eip //将0x12345放入eip中
Ret
Popl %eip //ip出栈
反汇编实验截图
1、源代码 main.c结果应该为,10
2、执行完反汇编命令后删除多余项的代码。
3.手绘分析过程。
总结
看似简单的代码背后,其实隐藏着计算机复杂的运算,不容小觑。PS.互批时请手下留情,如有不懂请咨询wechat : hlqhlqhb
- 从C简单程序的汇编代码入手,以理解计算机工作原理。
- 通过汇编一个简单的C程序,分析汇编代码理解计算机工作原理
- 反汇编一个简单的C程序,分析汇编代码理解计算机是如何工作的
- 通过汇编一个简单的C程序,分析汇编代码理解计算机是如何工作的
- 通过汇编一个简单的C程序,分析汇编代码理解计算机是如何工作的
- 通过汇编一个简单的C程序,分析汇编代码理解计算机是如何工作的
- 通过汇编一个简单的C程序,分析汇编代码,理解计算机如何工作
- 分析一个简单C程序的汇编代码,理解计算机是如何工作的
- 汇编一个简单的C程序,分析代码理解计算机是怎么工作的
- 通过一个简单的C程序汇编代码理解计算机是怎么工作的
- 通过反汇编一个简单的C程序,分析汇编代码理解计算机是如何工作的
- 通过反汇编一个简单的C程序,分析汇编代码理解计算机是如何工作的
- 通过反汇编一个简单的C程序,分析汇编代码理解计算机是如何工作的(原创)
- lab1:通过汇编一个简单的C程序,分析汇编代码理解计算机是如何工作的
- 通过反汇编一个简单的C程序,分析汇编代码理解计算机是如何工作的
- 实验一 通过汇编一个简单的C程序,分析汇编代码理解计算机是如何工作的
- 通过反汇编一个简单的C程序,分析汇编代码理解计算机是如何工作的
- 1、通过汇编一个简单的C程序,分析汇编代码理解计算机是如何工作的
- UVA 820(p380)----Internet Bandwidth
- MySQL知识(十三)——索引
- Android Studio——android坐标
- Android 大图查看器
- Nim 游戏
- 从C简单程序的汇编代码入手,以理解计算机工作原理。
- UVA 821(p379)----Page Hopping
- linux(ubuntu)设置以太网络
- React-JSX详解
- UVA 839(p157)----Not so Mobile
- Log4j扩展使用--自定义输出
- 假如我能使一颗心免于破碎
- 配置安装Scrapy
- 更改与显示文字标签