Mor*_*öfl 5 assembly d inline-assembly
我在D编程语言中使用内联汇编程序访问静态变量时遇到了一些麻烦.文档说我必须访问局部变量
mov EAX, var[EBP]; //or mov EAX, var;
Run Code Online (Sandbox Code Playgroud)
和类变量
mov EBX, this;
mov EAX, var[EBX];
Run Code Online (Sandbox Code Playgroud)
但它没有记录如何访问静态变量.这是我的代码抛出错误:
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
}
}
Run Code Online (Sandbox Code Playgroud)
对于可以从汇编程序和汇编程序访问的整数,我真的需要一种"全局存储"的方式,我会非常高兴有任何这方面的帮助(或替代方法).
在 D2 中,全局变量默认放置在线程局部存储中。用于__gshared声明“经典”静态变量。
这有效:
module test;
__gshared int A = 1234;
void SetA()
{
asm
{
mov A, 5432;
}
}
unittest
{
SetA();
assert(A == 5432);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
707 次 |
| 最近记录: |