我很好奇(例如)的等价物
.data
x dword 42
.code
main proc
; Do stuff here.
ret
main endp
end
如果我正在编写内联汇编(在 D 中),就会是这样。我知道我可以做类似的事情
int main()
{
int x = 42;
asm
{
// Do stuff here.
}
return 0;
}
,但练习的目的不是通过使用 D 本身来“作弊”。
最佳答案
D 的内联汇编器无法设置代码或数据将发送到哪个部分。它始终会进入与其嵌入的函数代码相同的部分。
但是您可以使用普通的 D 声明将数据插入到 D 的数据段中:
__gshared int x = 42;
请注意,如果不使用 __gshared,x 将出现在线程本地存储 block 中,并且需要专门生成的代码才能访问。另外,如果代码是使用-fPIC编译的,则需要专门生成的代码来访问所有数据段数据。
关于assembly - .data MASM 指令的内联汇编等效项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18039437/