gpt4 book ai didi

c++ - 在 C++ 中使用内联程序集更改数字值

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:35:34 24 4
gpt4 key购买 nike

我正在尝试通过使用 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]
};
}

并且值从未改变。

最佳答案

实际上,您正在增加 x 的值。 X 在汇编语言中是一个常量,包含x 变量(函数foo)的地址。反过来,它包含 mainx 的地址。因此,inc [x] 导致指针递增。您需要增加存储在地址 [x] 的值,例如 inc [[x]]。当然,您不能用汇编语言的一条指令来完成,因为您需要两次 内存访问:了解值存储在何处并实际递增 值。所以我建议这样的代码:

push eax
mov eax, [x]
inc dword ptr [eax]
pop eax

关于c++ - 在 C++ 中使用内联程序集更改数字值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15328334/

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