Browse Source

Add $PIC OFF directive for FPC compilation and change Data field type to int64 to avoid size errors

git-svn-id: trunk@38432 -
pierre 7 years ago
parent
commit
593794c0fd
1 changed files with 12 additions and 7 deletions
  1. 12 7
      tests/test/tasm10a.pp

+ 12 - 7
tests/test/tasm10a.pp

@@ -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.