From 1a57391e5501893cf169ff7ce8c104e63105f5e7 Mon Sep 17 00:00:00 2001 From: nickysn <nickysn@gmail.com> Date: Fri, 16 Feb 2018 15:02:06 +0000 Subject: [PATCH] + extended test tasm20.pp with a function, that returns a shortstring (in that particular case, it is allocated a @Result variable) git-svn-id: trunk@38248 - --- tests/test/tasm20.pp | 60 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) diff --git a/tests/test/tasm20.pp b/tests/test/tasm20.pp index 011bdf53ad..ff6a8b22c0 100644 --- a/tests/test/tasm20.pp +++ b/tests/test/tasm20.pp @@ -2,8 +2,35 @@ {$IFDEF FPC} {$MODE TP} +{$ELSE} +{$DEFINE FPC_MM_LARGE} {$ENDIF FPC} +{$IFDEF FPC_MM_TINY} + {$DEFINE NEAR_CODE} + {$DEFINE NEAR_DATA} +{$ENDIF} +{$IFDEF FPC_MM_SMALL} + {$DEFINE NEAR_CODE} + {$DEFINE NEAR_DATA} +{$ENDIF} +{$IFDEF FPC_MM_MEDIUM} + {$DEFINE FAR_CODE} + {$DEFINE NEAR_DATA} +{$ENDIF} +{$IFDEF FPC_MM_COMPACT} + {$DEFINE NEAR_CODE} + {$DEFINE FAR_DATA} +{$ENDIF} +{$IFDEF FPC_MM_LARGE} + {$DEFINE FAR_CODE} + {$DEFINE FAR_DATA} +{$ENDIF} +{$IFDEF FPC_MM_HUGE} + {$DEFINE FAR_CODE} + {$DEFINE FAR_DATA} +{$ENDIF} + program tasm20; {$S-} @@ -17,6 +44,7 @@ var {$ifdef FPC} res3: int64; {$endif FPC} + res4: string; expect_sp: word; actual_sp: word; @@ -49,6 +77,35 @@ asm end; {$endif FPC} +function myfunc4: string; assembler; +asm + mov actual_sp, sp + cld +{$IFDEF FAR_DATA} + les di, @Result +{$ELSE} + mov di, @Result + push ds + pop es +{$ENDIF} + mov al, 7 { string length } + stosb + mov al, 'T' + stosb + mov al, 'r' + stosb + mov al, 'a' + stosb + mov al, 'l' + stosb + mov al, 'a' + stosb + mov al, 'l' + stosb + mov al, 'a' + stosb +end; + procedure Error; begin Writeln('Error!'); @@ -68,5 +125,8 @@ begin if (res3 <> $123456789ABCDEF0) or (expect_sp <> actual_sp) then Error; {$endif FPC} + res4 := myfunc4; + if (res4 <> 'Tralala') and ((expect_sp - actual_sp) <> (2 + SizeOf(Pointer))) then + Error; Writeln('Ok!'); end.