Жаль мы не знаем что выдало бы 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 оптимизация напрочь вырублена?
Сейчас этот форум просматривают: Google [Bot] и гости: 1