asm 블록 컨텍스트에 문서화되지 않은 상수 eof
이있는 것 같습니다. 이것은 Delphi 7을 사용하여 테스트되었습니다.델파이 어셈블러 상수 'eof'
program TestEof;
{$APPTYPE CONSOLE}
var
example : Integer;
begin
asm
mov example, eof
end;
writeln(example);
readln;
end.
이것은 14
을 인쇄합니다.
여기서 상수는 eof
이고 값은 $0E
또는 14
입니다.
편집 :이
...
call @InitExe
// mov example, eof
mov [example], $0000000e
// writeln(example)
mov eax, [$004040a4]
mov edx, [example]
call @Write0Long
call @WriteLn
call @_IOTest
// readln;
...
실제로 이것은'system.pas'에서도 실제로 사용됩니다. TextOpen 함수를 참조하십시오. '// if (f.Buffer [i] == eof)'다음에. Line'CMP 바이트 ptr [ESI] .TTextRec.Buffer [EAX], eof'. – Egon
엄밀히 말하면 내장되어 있습니다. 내장 함수는 사용자가 지정한 함수 인 rtl 도우미를 호출하지만 코드 생성과 다른 함수 (예 : iotest) 호출도 할 수 있습니다. EOF는 비슷한 (예 : 모든 IOCheck/IOTest 기본 제공)의 여러 내장 함수를 간소화하는 데 도움이되는 내장 함수의 내부 시퀀스 번호 일 수 있지만 컴파일러 소스는 추측입니다. –
그리고 XE2에서 등가 코드는'$ 1A'을 찾습니다. 이것은 System.pas의 구현 세부 사항입니다. 어떤 문제를 해결하려고하는지 아니면 호기심에서 벗어난 것입니까? –