Assembly 使用内联汇编高效地引用C数组

Assembly 使用内联汇编高效地引用C数组,assembly,Assembly,使用windowsxp,gcc 我有一个C++项目,里面有一些内嵌汇编代码。 程序集代码需要引用C数组。 因为我使用的是内联汇编。我必须将指向数组的指针传递到其中一个寄存器中。不幸的是,这抢走了我的寄存器,我需要一些复杂的计算 我想知道是否有一种内联汇编方法可以在不丢失寄存器或将指针推送到堆栈的情况下引用C数组。我不能使用堆栈的原因是因为我依赖堆栈来存储其他值,因为我没有足够的寄存器。您通常使用esi或edi寄存器来存储这样的信息,所以这些寄存器根本不涉及计算。(假设您正在使用x86)在汇编代码

使用windowsxp,gcc

<>我有一个C++项目,里面有一些内嵌汇编代码。 程序集代码需要引用C数组。 因为我使用的是内联汇编。我必须将指向数组的指针传递到其中一个寄存器中。不幸的是,这抢走了我的寄存器,我需要一些复杂的计算


我想知道是否有一种内联汇编方法可以在不丢失寄存器或将指针推送到堆栈的情况下引用C数组。我不能使用堆栈的原因是因为我依赖堆栈来存储其他值,因为我没有足够的寄存器。

您通常使用esi或edi寄存器来存储这样的信息,所以这些寄存器根本不涉及计算。(假设您正在使用x86)

在汇编代码中执行“复杂计算”?听起来是个错误。通常,编写内嵌汇编代码的唯一原因是需要使用编译器内部不支持的机器指令


你没说你在用什么编译器。GCC中的asm()语句非常强大。您通常可以编写一个asm语句,通过名称引用本地或全局变量,然后让编译器选择寄存器.

您需要编辑您的问题以指定您正在使用的平台。添加了平台信息。我应该补充的是,我缺少寄存器的原因是,这些值太大,无法放入32位寄存器,因此分布在多个寄存器中。域是加密的。