汇编 cmp_程序是怎样跑起来的 -- 通过汇编语言了解程序的实际构成(后篇)

“线程”是操作系统分配给CPU的最小运行单位。源代码的一个函数就相于一个线程。多线程处理指的是在一个程序中同时运行多个函数的意思。

5f70115c9a76355c7ef036a238a913e3.png

循环处理的实现方法

在汇编语言的源代码中,循环是通过比较指令(cmp)跳转指令(jl)来实现的。

汇编语言中比较指令的结果,会存储在CPU的标志寄存器中。

汇编语言中有多个跳转指令,这些跳转指令会根据标志寄存器的值来判定是否需要跳转。

汇编语言是对CPU的实际运行进行直接描述的低级编程语言,C语言是用与人类的感觉相近的表现来描述的高级编程语言。

7a7ffa055dc6b710345d9e01ceb2f163.png

条件分支的实现方法

条件分支的方法的实现方法同循环处理的实现方法类似,使用的也是cmp指令和跳转指令

虽然大部分的C语言参考书中都写着“为了便于理解程序的结构,应尽量避免使用无条件分析的goto语句”,不过,在汇编语言这一领域中,如果不使用相当于C语言goto语句的jmp指令,就无法实现循环和条件分支。由些看来,关于应不应该在C语言中使用goto语句,大家没有必要这么紧张。

dc2f0c7ffcaa488208dec551d53610ff.png

了解程序运行方式的必要性

汇编语言的经验还是很重要的。因为借助汇编语言,我可以更好的了解计算机的机制。在某些情况下对查找bug的原因也是有帮助的。(像多线程锁的本质原因)

没有汇编语言经验的程序员,就相当于只知道汽车的驾驶方式而不了解汽车结构的驾驶员。如果汽车出了问题,他们就无法自己找到原因。与此相对的,有汇编经验语言经验的程序员,他们不仅能自己解决问题,还能在驾驶过程中省油

看来还得接着重新学习一下汇编语言。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值