gpt4 book ai didi

我可以告诉 MSVC 编译器不要使用某个寄存器吗?

转载 作者:行者123 更新时间:2023-11-30 18:13:02 26 4
gpt4 key购买 nike

有没有办法告诉MSVC编译器在短时间内不要修改某个寄存器?就像在一个小循环中,告诉它不要使用 ebx 寄存器(它可以使用任何其他寄存器)。在这种情况下,压入和弹出寄存器不起作用,因为在我将其弹出后,MSVC 会自动重新排列代码以修改寄存器 - 它必须在那里进行某种优化。

最佳答案

我认为你不能指示编译器不使用 ebx。但是,听起来 ebx 在程序中的某个位置设置为某个值(可能作为您调用的函数的函数返回值的一部分),并且您希望 ebx 中的该值在程序中的其他点可用,也许是在之前您要调用的另一个函数。那么可能有以下情况:

myFuncA(...);  // returns something in ebx
__asm push ebx
....
.... // C code
....
__asm pop ebx
myFuncB(); // wants something in ebx

注意:myFuncB() 不能有参数,否则编译器可以使用 ebx 来获取和推送参数;如果它有参数,您可能必须在 asm 中编写整个函数调用的代码。

关于我可以告诉 MSVC 编译器不要使用某个寄存器吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27747049/

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