简化这个masm以使其更快?

时间:2013-03-30 09:01:02

标签: c++ int masm addition

我正在尝试将在Visual Studio中添加512位(big int)的c ++代码转换为masm内联汇编程序。 Carry非常重要,因为下面的链接中显示了C ++。我需要将c ++表示为visual studio中的masm inline汇编程序

我试图在masm中这样做,但它很慢,我的masm代码耗费了700毫秒

C++ code Here。 C ++需要300毫秒才能添加

Masm代码          


_asm {
         mov edx, summand
         mov eax, [edx]
         mov ebx, this
         add eax, [ebx]
         mov [ebx], eax

mov ecx, 4 mov eax, [edx + ecx] adc eax, [ebx + ecx] mov [ebx + ecx], eax mov ecx, 8 mov eax, [edx + ecx] adc eax, [ebx + ecx] mov [ebx + ecx], eax mov ecx, 12 mov eax, [edx + ecx] adc eax, [ebx + ecx] mov [ebx + ecx], eax }

1 个答案:

答案 0 :(得分:1)

使用

可能更快
 mov eax, [edx + 4]
 adc eax, [ebx + 4]
 mov [ebx + 4], eax

而不是

 mov ecx, 4
 mov eax, [edx + ecx]
 adc eax, [ebx + ecx]
 mov [ebx + ecx], eax

和8和12的相同。但是如果你的asm代码真的比链接中的C ++代码慢,我会感到惊讶。可能是使用asm块会禁用函数的另一部分中的某些优化。您将不得不查看生成的汇编程序代码以查找整个函数。 (你的700ms是什么时候?)