第十章

本章分为13个小节,主题为通过汇编语言了解程序的实际构成,汇编语言和本地代码是一一对应的,通过编译器输出汇编语言的源代码,不会转换成本地代码的伪指令,汇编语言语法是“操作码+操作数”,最常用的mov指令,对栈进行push和pop,函数调用机制,函数内部的处理,始终确保全局变量用的内存空间,临时确保局部变量用的内存空间,循环处理的实现方法,条件分支的实现方法,了解程序运行方式的必要性等几个小节。
本章前半部分主要讲对 CPU 解释运行的本地代码和汇编语言的一对一关系、汇编语言的源代码中包含的用来指示汇编器的伪命令、栈的 push/pop 以及调用函数的机制。后半部分主要讲局部变量和全局变量的不同、循环等流程控制的实现方式。计算机 CPU 能直接解释运行的只有本地代码(机器语言)程序。用 C 语言等编写的源代码需要通过各自的编译器编译后,转换成本地代码。还了解到除了将本地代码进行反汇编这一方法外,通过其他方式也可以获取汇编语言的源代码。大部分 C 语言编译器,都可以把利用 C 语言编写的源代码转换成汇编语言的源代码,而不是本地代码。利用该功能,就可以对 C 语言的源代码和汇编语言的源代码进行比较研究。汇编语言源代码比 C 语言还要简单。本章的主要目的并不是用汇编语言来编写程序,只需要能读懂汇编语言的源代码就足够了。
指令中最常使用的是对寄存器和内存进行数据存储的 mov 指令。mov 指令的两个操作数,分别用来指定数据的存储地和读出源。操作数中可以指定寄存器、常数、标签(附加在地址前),以及用方括号([])围起来的这些内容。
通过本章对 C 语言源代码和汇编语言源代码进行比较,我对“程序是怎样跑起来的”又有了更深的理解。而且,从汇编语言源代码中获得的知识,在某些情况下对查找 bug 的原因也是有帮助的。

posted @ 2024-02-24 12:16  Y鹏磊  阅读(22)  评论(0)    收藏  举报