119
854
3389
中级工程师
学习编程其实就是学高级语言,即那些为人类设计的计算机语言。
但是,计算机不理解高级语言,必须通过编译器转成二进制代码,才能运行。学会高级语言,并不等于理解计算机实际的运行步骤。
536646302ef8f4ac43.png (95.1 KB ) 下载附件 2022-8-22 10:53 上传
536646302ef8f4ac43.png (95.1 KB )
下载附件
2022-8-22 10:53 上传
计算机真正能够理解的是低级语言,它专门用来控制硬件。汇编语言就是低级语言,直接描述/控制 CPU 的运行。如果你想了解 CPU 到底干了些什么,以及代码的运行步骤,就一定要学习汇编语言。
汇编语言不容易学习,就连简明扼要的介绍都很难找到。下面我尝试写一篇最好懂的汇编语言教程,解释 CPU 如何执行代码。
419656302ef9a3567e.jpg (169.53 KB ) 下载附件 2022-8-22 10:53 上传
419656302ef9a3567e.jpg (169.53 KB )
使用特权
487146302efb32e658.jpg (140.78 KB )
832576302f02281d23.png (18 KB )
2022-8-22 10:55 上传
290586302f06d4fb96.png (19.18 KB )
2022-8-22 10:56 上传
53736302f0a9d5d04.png (8.89 KB )
2022-8-22 10:57 上传
92966302f0b5eb63b.png (9.74 KB )
506606302f1295b2cc.png (17.2 KB )
2022-8-22 10:59 上传
int main() { int a = 2; int b = 3; }
809296302f14357a27.png (17.99 KB )
2022-8-22 11:00 上传
int main() { int a = 2; int b = 3; return add_a_and_b(a, b); }
746946302f1659a5af.png (20.16 KB )
96106302f17a0e432.png (88.9 KB )
2022-8-22 11:01 上传
992016302f18720616.png (21.49 KB )
int add_a_and_b(int a, int b) { return a + b; } int main() { return add_a_and_b(2, 3); }
$ gcc -S example.c
_add_a_and_b: push %ebx mov %eax, [%esp+8] mov %ebx, [%esp+12] add %eax, %ebx pop %ebx ret _main: push 3 push 2 call _add_a_and_b add %esp, 8 ret
push %ebx
push 3
push 2
25766302f245c8e42.png (41.14 KB )
2022-8-22 11:04 上传
call _add_a_and_b
mov %eax, [%esp+8]
mov %ebx, [%esp+12]
add %eax, %ebx
pop %ebx
ret
add %esp, 8
发表回复 本版积分规则 回帖后跳转到最后一页
1
扫码关注 21ic 官方微信
扫码关注嵌入式微处理器
扫码关注21ic项目外包
扫码关注21ic视频号
扫码关注21ic抖音号
本站介绍 | 申请友情链接 | 欢迎投稿 | 隐私声明 | 广告业务 | 网站地图 | 联系我们 | 诚聘英才 | 论坛帮助
京公网安备 11010802024343号