Суммирование элементов в массиве с использованием сборки с плавающей запятой x87 - PullRequest
1 голос
/ 12 апреля 2020

Я пытаюсь получить сумму массива, используя x87, но вывод отображается как 0. Насколько я понимаю, сумма в конце должна быть в EAX. Что можно сделать, чтобы это исправить?

int main() {

   float price[ ] = { 22.1, 34.44, 567.33, 2.45 };
   float sum= 0;


   __asm {

                        xor edx, edx //counter
                        mov ebx, 4 //num elements in array
                        lea ecx, price //address of first element in array
                        fldz

                    L1 :
                        fld dword ptr[ecx + edx * 4]
                        fadd
                        dec ebx
                        jz done

                        inc edx
                        jmp L1

                    done :
                        mov sum, eax    
   }

   cout << "sum= " << sum; 

   return 0
}
...