我很好奇相当于(例如)
.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本身来“欺骗”。
答案 0 :(得分:4)
D的内联汇编程序无法设置代码或数据将发送到哪个部分。它将始终与嵌入其中的函数的代码进入相同的部分。
但是你可以使用普通的D声明将数据插入D的数据段:
__gshared int x = 42;
请注意,如果不使用__gshared,x将在线程本地存储块中结束,并且需要特殊生成的代码才能访问。此外,如果使用-fPIC编译代码,则需要专门生成的代码来访问所有数据段数据。