Ответ 1
Eof
фактически является функцией определенной в блоке System
.
В реализациях Delphi, которые я имею под рукой, Delphi 6 и XE2, Eof
реализуется как внутренняя процедура, что приводит к вызову одного из следующие функции:
function _EofFile(var f: TFileRec): Boolean;
function _EofText(var t: TTextRec): Boolean;
Я не знаю, почему ваш код ассемблера превращен в mov [...],$0000000e
. Вы отмечаете в комментарии, что сам блок System
использует код Eof
в asm
, например, в TextOpen
. Тот же код в XE2 теперь является чистым Pascal и ищет значение $1A
вместо $0E
. Это очень похоже на детали реализации. Если вы хотите понять, почему это так, я думаю, вам нужно будет перепроектировать код в модуле System
или посмотреть, объяснят ли разработчики Embarcadero вам эту реализацию.