【发布时间】:2019-12-22 19:25:10
【问题描述】:
汇编调用指令是如何编译成机器码的? 标签会发生什么? 标签不存在时,机器码调用指令如何引用特定函数?
我知道编译后的代码中的标签被函数的地址替换了。
但是,函数的指令只有在程序运行后才会加载到 RAM 内存中。 那么里面的机器码是如何在编译之前通过标签的方式来表示一个特定的函数呢?
请用简单易懂的方式回答我,最好是一个实际的例子。
【问题讨论】:
-
“标签被函数的地址替换”就是它的全部内容。汇编器在发出机器代码指令时为它们分配顺序地址,因此它确切地知道任何给定函数在运行时将位于内存中的什么位置。现代计算机上的虚拟内存硬件允许所有程序驻留在相同的起始内存地址,即使有多个程序正在运行,因为每个程序都有自己的私有内存空间。
-
你为什么repost你之前的问题?
标签: assembly machine-code