如何使用x86汇编语言将两个64位数相乘?

Kaw*_*azu 8 x86 assembly

我该怎么办......

  • 乘以两个64位数

  • 乘以两个16位十六进制数

......使用汇编语言.

我只允许使用寄存器%eax,%ebx,%ecx,%edx和堆栈.

编辑:哦,我在x86
EDIT2 上使用ATT语法:不允许反编译成程序集...

Mic*_*urr 12

使用应该是你的课程教科书,Randall Hyde的"汇编语言艺术".

请参见4.2.4 - 扩展精度乘法

虽然8x8,16x16或32x32乘法通常就足够了,但有时您可能希望将较大的值相乘.您将使用x86单操作数MUL和IMUL指令进行扩展精度乘法.

执行扩展精度乘法时,最重要的事情可能是您必须同时执行多精度加法.添加所有部分产品需要多次添加才能产生结果.下面的清单演示了在32位处理器上乘以两个64位值的正确方法.

(请参阅完整装配清单和插图的链接.)