gpt4 book ai didi

c++ - 汇编指令是如何指示的?

转载 作者:行者123 更新时间:2023-12-01 15:13:32 25 4
gpt4 key购买 nike

为了详细说明标题的问题,假设我在 C++ 中声明了以下数组,

int myarr[10];

这在 x86 中反汇编为以下内容
myarr:
.zero 40

现在,AFAIK 这个 .zero指令用于约定,不是指令。那么,这个指令究竟是如何翻译成 x86(或任何其他架构,这里不是重点)指令的呢?因为,据我们所知,CPU 只能执行指令。所以我猜这些指令以某种方式被翻译成指令,对吗?

我也可以通过询问 .word 来概括这个问题。 .long等被翻译成指令,但我认为它是清楚的。

最佳答案

汇编器的输出是一个目标模块。在目标模块中是程序各个部分的表示。每个部分都有一个大小、一些属性,可能还有一些要放入该部分的数据。

例如,一个部分可能有几千字节,具有指示它包含执行指令的属性,并且具有由这些指令组成的数据。另一段可能有几百字节但没有数据——它只是程序启动时要分配的空间。另一部分可能非常大,并且在程序启动时包含包含其初始值的非零数据。

组装 .zero 40指令,编译器仅在其当前构建的部分中包含 40 个字节的零。当它写入最终输出时,它将在该部分中包含这些零。像这样的数据指令和 .word这样简单地告诉汇编器将哪些数据放入其输出中。

关于c++ - 汇编指令是如何指示的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59913912/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com