Я пытаюсь понять основы операций с плавающей запятой на x86.Я понимаю, что у нас есть выделенный FPU со стеком, но я не нахожу много соответствующей информации о поведении стека в терминах различных инструкций.
В принципе, адресация регистров fpu смущает меня.Если я ссылаюсь на st (#), я говорю о конкретном регистре?Или это смещение от вершины стека?
Я думаю, что на большинство моих вопросов можно ответить одним примером:
Если у меня пустой стек FPU, и запустите:
fld x
fld y
fmul st, st(1)
Будет ли результат:
ST(0) = y * x
ST(1) = x
или:
ST(0) = x * y
ST(1) = y
?
Обратите внимание, что разница между ними составляет значение вСТ (1).