【发布时间】:2013-02-26 00:35:11
【问题描述】:
我正在尝试通过在 C++ 中使用内联程序集来增加数值。我这样做的原因是为了练习我的“内联汇编”技能。
这就是我到目前为止所做的:
void main()
{
int x;
cout << "Please enter a number ";
cin >> x;
cout << "The number you entered is: " << x << "\n";
foo(&x);
cout << "The new number is: " << x;
cin >> x;
}
void foo(int *x)
{
__asm
{
inc [x]
};
}
而且价值从未改变。
【问题讨论】:
-
你用的是什么编译器? MSVC?
-
Microsoft Visual Studio 2012
-
您可能想反汇编编译后的代码,看看它是否符合您的预期。由于间接性太少或太多,我已经看到这种事情出错了。您可能会增加
x而不是*x。 -
在黑暗中拍摄,但
inc DWORD PTR [x]有效吗? -
@ImriPersiado
cl /Fa filename.cpp将生成包含汇编语言列表的filename.asm。
标签: c++ inline-assembly