Я делаю большую программу с использованием модуля плавающей запятой в ASM, но я получаю неправильные цифры. Я сделал простой код, который также дает ложные числа. Кто-нибудь понял, почему? Что здесь не так? Я использую ubuntu 32b.ASM Модуль с плавающей точкой, дающий неправильные номера
SYSEXIT = 1
.align 32
.data
a: .float 1
b: .float 2
test1: .float 0
.text
.global main
main:
finit
fld a
fld b
loop:
fmulp
fstp test1
mov $SYSEXIT, %eax
int $0x80
Я использую GDB, и после того, как «печатать» он показывает огромное количество, а не 1, а так же с другими 2-х переменных (б, test1).
Что здесь не так?
Знает ли gdb, что вы просите его распечатать числа с плавающей запятой, а не целые числа? Я думаю, что это может и не знать. И 1.0 и 2.0 действительно огромные числа, если вы интерпретируете их 32 бита как 32 бита целого числа. –