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

时间:2012-03-15 21:05:50

标签: assembly

使用Windows XP,gcc。

我有一个带有内联汇编代码的C ++项目。 汇编代码需要引用C数组。 因为我使用的是内联汇编。我必须将指向数组的指针传递给其中一个寄存器。不幸的是,这使我失去了一些我需要进行复杂计算的寄存器。

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

2 个答案:

答案 0 :(得分:1)

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

您没有说出您正在使用的编译器。 GCC中的asm()语句非常强大。您通常可以编写一个按名称引用本地或全局变量的asm语句,并让编译器选择寄存器。

答案 1 :(得分:0)

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