我正在尝试将在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
}
答案 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是什么时候?)