Czy to błąd kompilatora?Dlaczego nie mogę użyć elementów wewnętrznych kompilatora w bloku ASM?
program Project44;
{$APPTYPE CONSOLE}
uses
System.SysUtils;
function Test: integer;
asm
xor eax,eax
add eax,SizeOf(NativeInt);
end;
begin
WriteLn(Test); //Typically outputs 31 or 49
{$ifdef CPUX86}
WriteLn('should be 4');
{$else}
{$ifdef CPUX64}
WriteLn('should be 8');
{$endif}{$endif}
ReadLn
end.
Ten program wyświetla wszystkie rzeczy oprócz 4/8.
Czy jest to błąd, czy jest to udokumentowane, że nie mogę używać SizeOf i innych właściwości kompilatora w asemblerze?
Jeśli chciałbym użyć SizeOf(xx)
w bloku ASM co mam zrobić?
Domyślam się, że twój kod jest tylko ilustracyjnym przykładem, więc weź to jako sidenote; w tym przypadku możesz zadeklarować stałą. – TLama