gpt4 book ai didi

assembly - D 内联汇编器 : Access Static Variable

转载 作者:行者123 更新时间:2023-12-02 22:06:17 25 4
gpt4 key购买 nike

我在使用 D 编程语言中的内联汇编器访问静态变量时遇到了一些问题。文档说我必须使用访问局部变量

mov EAX, var[EBP]; //or mov EAX, var;

和类变量

mov EBX, this;
mov EAX, var[EBX];

但没有记录如何访问静态变量。这是我的代码,它抛出一个错误:

module test;

static int A = 1234;

static void SetA()
{
asm
{
mov A, 5432; //compiles, but throws an error
//tried it with "mov dword ptr [A], 5432; too
}
}

我确实需要一种可以从汇编器和 D 访问的整数的“全局存储”方式,我将非常高兴对此(或替代方式)提供任何帮助。

最佳答案

D2 中全局变量默认放置在线程局部存储中。使用__gshared声明“经典”静态变量。

这有效:

module test;

__gshared int A = 1234;

void SetA()
{
asm
{
mov A, 5432;
}
}

unittest
{
SetA();
assert(A == 5432);
}

关于assembly - D 内联汇编器 : Access Static Variable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11491144/

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