内联汇编等效于.data MASM指令

时间:2013-08-04 03:24:24

标签: assembly d inline-assembly masm

我很好奇相当于(例如)

        .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本身来“欺骗”。

1 个答案:

答案 0 :(得分:4)

D的内联汇编程序无法设置代码或数据将发送到哪个部分。它将始终与嵌入其中的函数的代码进入相同的部分。

但是你可以使用普通的D声明将数据插入D的数据段:

__gshared int x = 42;

请注意,如果不使用__gshared,x将在线程本地存储块中结束,并且需要特殊生成的代码才能访问。此外,如果使用-fPIC编译代码,则需要专门生成的代码来访问所有数据段数据。