【发布时间】:2015-06-29 13:01:50
【问题描述】:
我需要编写一个宏来在 32 位机器上添加 2 个 64 位。
我想到的一种方式如下:
%macro add_double 2
mov edx, %1
add %2,edx
mov edx,%1
shl edx,31
mov eax,%2
shl eax,31
add eax,edx
add %2,eax
%endmacro
这甚至会起作用吗? 我也想知道......有一种简单的方法可以使用 [] 但是可以在宏中执行 [%1] 吗?我是组装新手,所以我不知道。
【问题讨论】:
-
这两个 64 位值在哪里?在两个 32 位寄存器对中?如果是这样,您的宏不需要 4 个参数吗?无论如何,您当前的实现对我来说看起来不正确。我没有尝试运行它,但看起来如果你给出 1 和 0 作为参数,你会得到 0x80000001 作为结果。
-
adc就是为此专门发明的。
标签: assembly macros x86 nasm x86-16