- 理解程序运行的好处:通过对比C语言源代码和汇编语言源代码,能加深对“程序是怎样跑起来的”理解,且在某些情况下有助于查找bug。
- 多线程示例:代码清单10 - 13展示了更新全局变量counter值的C语言程序,MyFunc1和MyFunc2函数都将counter值放大2倍。在多线程处理中同时调用这两个函数,预期counter值应为400,但有时结果可能是200。将C语言代码中counter *= 2部分转换为汇编语言后发现,实际执行分为“把counter的数值读入eax寄存器”“将eax寄存器的数值变成原来的2倍”“把eax寄存器的数值写入counter”3个处理步骤。在多线程中,由于线程切换,可能导致MyFunc1函数读出counter值后还未写入新值时,MyFunc2函数又读出旧值,从而使最终counter值为200。
- 避免bug的方法:为避免上述多线程bug,可采用以函数或C语言源代码的行为单位来禁止线程切换的锁定方法。
- 汇编语言的重要性:现在基本没人用汇编语言编写程序,因其相比C语言等高级编程语言效率低。但汇编语言经验很重要,借助它可更好地了解计算机机制,专业程序员至少应有一次使用汇编语言的经验。以开车为例,没有汇编语言经验的程序员如同只知驾驶方法却不了解汽车结构的驾驶员,遇到问题无法自行查找原因,而有汇编语言经验的程序员则像了解汽车结构的驾驶员,能自行解决问题且更高效。
posted @
2025-02-14 22:03
叽里呱啦哇里呱唧
阅读(
26)
评论()
收藏
举报