mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-07 20:08:12 +02:00
Add $PIC OFF directive for FPC compilation and change Data field type to int64 to avoid size errors
git-svn-id: trunk@38432 -
This commit is contained in:
parent
7e98f58c8a
commit
593794c0fd
@ -1,21 +1,25 @@
|
||||
{ %cpu=x86_64 }
|
||||
|
||||
{$ifdef FPC}
|
||||
{$PIC OFF}
|
||||
{$endif FPC}
|
||||
|
||||
program asmclass;
|
||||
{$mode delphiunicode}
|
||||
{$asmmode intel}
|
||||
type
|
||||
TMyClass = class
|
||||
public
|
||||
Data: longint;
|
||||
function AsmToClass: longint; ms_abi_default;
|
||||
Data: int64;
|
||||
function AsmToClass: int64; ms_abi_default;
|
||||
end;
|
||||
|
||||
function TMyClass.AsmToClass: longint; ms_abi_default;
|
||||
function TMyClass.AsmToClass: int64; ms_abi_default;
|
||||
asm
|
||||
mov RAX, Self.Data // Error: Can't access fields directly for parameters
|
||||
end;
|
||||
|
||||
function AsmToClassProc(Inst: TMyClass): longint; ms_abi_default;
|
||||
function AsmToClassProc(Inst: TMyClass): int64; ms_abi_default;
|
||||
asm
|
||||
mov RAX, Inst.Data // Error: Can't access fields directly for parameters
|
||||
end;
|
||||
@ -29,13 +33,14 @@ var
|
||||
C: TMyClass;
|
||||
begin
|
||||
C := TMyClass.Create;
|
||||
c.data:=123548;
|
||||
if C.AsmToClass<>123548 then
|
||||
c.data:=$123456789AB;
|
||||
if C.AsmToClass<>$123456789AB then
|
||||
halt(1);
|
||||
if AsmToClassProc(C)<>123548 then
|
||||
if AsmToClassProc(C)<>$123456789AB then
|
||||
halt(2);
|
||||
|
||||
if AsmToClassProc2(C)<>ppointer(c)^ then
|
||||
halt(3);
|
||||
C.Free;
|
||||
writeln('ok');
|
||||
end.
|
||||
|
Loading…
Reference in New Issue
Block a user