2012-03-15 55 views
-1

使用Windows XP,gcc。使用内联汇编有效地引用C数组

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

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

+3

您需要编辑您的问题以指定您正在处理的平台。 – 2012-03-15 21:07:02

+0

添加了平台信息。 – L123 2012-03-15 23:02:07

回答

0

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

+0

已经使用esi和edi寄存器。 – L123 2012-03-15 23:02:53

1

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

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

+0

我应该补充一点,我在寄存器上短小的原因是因为这些值太大而无法放入32位寄存器,因此分散在多个寄存器中。该域是加密。 – L123 2012-03-15 23:04:31