Жаль мы не знаем что выдало бы Delphi...
Легко!
View->Debug Windows->CPU
или Ctrl+Alt+C
Код
004795F8 40 inc eax
004795F9 C3 ret
Модератор: Модераторы
Жаль мы не знаем что выдало бы Delphi...
004795F8 40 inc eax
004795F9 C3 ret
Sergei I. Gorelkin писал(а):По ходу дела, GPC понимает LongInt как 64-битное целое, и код генерит соответствующий - для увеличения именно 64-битного числа на единицу.
addl $1, (%eax)
addl $1, (%eax)
adcl $0, 4(%eax)
есть именно инкремент 64-битного числа. Тут inc первой командой использовать нельзя, т.к. она не изменяет флаги, а нам нужно получить флаг переноса и прибавить его к старшей половине числа - что и делается второй командой.
_p__M4_Test_S0_Test1:
pushl %ebp
movl %esp, %ebp
movl 8(%ebp), %edx
movl (%edx), %eax
incl %eax
movl %eax, (%edx)
leave
ret
Иван Шихалев писал(а):Вообще надо помнить, что:
а) GPC — frontend для GCC. А GCC не может учитывать структуру языка, поскольку ничего о ней не знает.
б) Community & Team у FPC куда активнее…
И все-таки, странно, очень странно смотрится inc() через add… Может у GPC/GCC оптимизация напрочь вырублена?
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 9