我正在研究小项目并尝试将一些硬编码值用于内联汇编.为此,我正在使用模板.我创建了一个代码片段来显示我所看到的内容
#include <iostream>
template <size_t T>
struct MyClass
{
size_t myValue = T;
void doSomething()
{
size_t value = T;
__asm
{
mov eax, [T]
mov [value], eax
}
std::cout << value << std::endl;
}
};
int main()
{
auto o = new MyClass<999>();
o->doSomething();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
事实证明,对于汇编代码,它试图使用数据段而不是"直接粘贴数字"
; 25 : {
push ebp
mov ebp, esp
push ecx
; 26 : auto o = new MyClass<999>();
push 4
call ??2@YAPAXI@Z ; operator new
add esp, 4
; 14 …Run Code Online (Sandbox Code Playgroud)