【发布时间】:2016-11-30 18:48:07
【问题描述】:
在阅读一本关于机器指令和程序的书时,我遇到了一个特殊的点,它说汇编程序会扫描整个源程序两次。它在第一次通过/扫描期间建立一个符号表,并在第二次扫描期间将整个程序与它相关联。汇编器需要以类似的方式为函数提供地址。
现在,既然汇编程序要通过程序两次,为什么要声明一个函数才能使用呢?汇编器不会从第一遍为函数提供地址,然后在第二遍期间将其与程序相关联吗?
在这种情况下,我正在考虑 C 编程。
【问题讨论】:
-
函数需要在什么汇编器中声明才能使用?
-
C 编译器不是汇编程序。 C 语言的规则与汇编程序的工作方式无关。
-
我的意思是,要“汇编”的编译程序需要为程序包含的每个函数、变量等正确定义。如果汇编程序必须运行程序两次,不需要声明函数吗?
-
您混淆了编译器和汇编器。它们不是一回事。
-
第二遍只需要解析(fixup)前向引用。它甚至不需要完全通过源,只需通过参考列表即可。 IIRC Borland 编译器组使用类似的技术来实现“编译器”的 Turbo 应变。
标签: c assembly machine-instruction