FDIV, как использовать его в Nasm, сборка - PullRequest
0 голосов
/ 19 марта 2011

у меня есть сумма, хранящаяся в

fstp    qword [ebx]  ; Copy contents of st0 to space currently on top of the system stack

как мне разделить его на целочисленное значение, которое хранится в регистре edi?

я думал, что это просто

fdiv edi

но там написано недопустимая комбинация .... бла-бла-бла

понимание

Ответы [ 2 ]

1 голос
/ 19 марта 2011

Вы не можете. FPU не имеет доступа к целочисленным регистрам.

0 голосов
/ 19 марта 2011

Как говорит Дженс в своем ответе, FPU не имеет прямого доступа к целочисленным регистрам.Вам нужно будет использовать чистую память, чтобы сделать перевод.Это один из главных недостатков x87 FPU.Пример кода может выглядеть примерно так:

section .bss
fpscratch: resd 1

...

section .text

;other code goes here

MOV fpscratch, edi
FILD fpscratch
FDIV

(Обратите внимание на приведенный выше код: очевидно, он не был проверен, и я немного заржавелна моей сборке, так что, вероятно, что-то не так с ней, хотя это красиво и коротко.)

...