【发布时间】:2008-09-17 21:17:59
【问题描述】:
我该怎么办...
两个 64 位数字相乘
两个 16 位十六进制数相乘
...使用汇编语言。
我只能使用寄存器 %eax、%ebx、%ecx、%edx 和堆栈。
编辑:哦,我在 x86 上使用 ATT 语法
EDIT2:不允许反编译成程序集...
【问题讨论】:
-
您可能想要指定您正在使用的 what 程序集。一般技术是交叉应用的(通常),但助记符在平台之间几乎总是不同的。 :-)
-
哦,x86 的 ATT 语法?很抱歉没有添加该信息... 在标题上查找编辑按钮
-
相关:multiply two 32-bit numbers to get a 64-bit number, on a 8086 (32x32 => 64-bit with 16-bit multiplies) 显示了扩大乘法的算法。 64x64 => 128 位在 32 位机器上的处理相同。
-
为了好玩,32-bit extended multiplication via stack 包括一个 64x64 => 128 位乘法在 32 位模式下,使用 SSE2
pmuludq用于 4 个部分乘积中的 2 个,标量mul用于另外两个。
标签: assembly x86 bigint extended-precision