From 3cbe377f404d81f26ab8350e3a8dce81281eed58 Mon Sep 17 00:00:00 2001 From: nickysn Date: Mon, 6 Nov 2017 16:47:07 +0000 Subject: [PATCH] + added 2 tests for absolute var access to a 2-dimensional array from within inline asm git-svn-id: trunk@37562 - --- .gitattributes | 2 ++ tests/test/cpu16/i8086/tasmabs4.pp | 46 ++++++++++++++++++++++++++++++ tests/test/cpu16/i8086/tasmabs5.pp | 46 ++++++++++++++++++++++++++++++ 3 files changed, 94 insertions(+) create mode 100644 tests/test/cpu16/i8086/tasmabs4.pp create mode 100644 tests/test/cpu16/i8086/tasmabs5.pp diff --git a/.gitattributes b/.gitattributes index 146889bf14..1cc85a5e44 100644 --- a/.gitattributes +++ b/.gitattributes @@ -12130,6 +12130,8 @@ tests/test/cpu16/i8086/tasm16_32_4.pp svneol=native#text/pascal tests/test/cpu16/i8086/tasmabs1.pp svneol=native#text/pascal tests/test/cpu16/i8086/tasmabs2.pp svneol=native#text/pascal tests/test/cpu16/i8086/tasmabs3.pp svneol=native#text/pascal +tests/test/cpu16/i8086/tasmabs4.pp svneol=native#text/pascal +tests/test/cpu16/i8086/tasmabs5.pp svneol=native#text/pascal tests/test/cpu16/i8086/tasmseg1.pp svneol=native#text/pascal tests/test/cpu16/i8086/tfarcal1.pp svneol=native#text/pascal tests/test/cpu16/i8086/tfarcal2.pp svneol=native#text/pascal diff --git a/tests/test/cpu16/i8086/tasmabs4.pp b/tests/test/cpu16/i8086/tasmabs4.pp new file mode 100644 index 0000000000..7765922084 --- /dev/null +++ b/tests/test/cpu16/i8086/tasmabs4.pp @@ -0,0 +1,46 @@ +{ %cpu=i8086 } + +program tasmabs4; + +{ NOT TP7 compatible (TP7 doesn't support absolute with an index) } + +{$ASMMODE INTEL} +{$ASMCPU 80386} + +var + barr: array [8..12, -7..100] of byte; + l: longint absolute barr[9]; + w: word absolute barr[10]; + b: byte absolute barr[11]; +begin + FillChar(barr, SizeOf(barr), $ff); + asm + mov l, 4 + end; + if (barr[9,-7] <> 4) or (barr[9,-7+1] <> 0) or (barr[9,-7+2] <> 0) or + (barr[9,-7+3] <> 0) or (barr[9,-7+4] <> 255) or (barr[8,100] <> 255) then + begin + Writeln('Error!'); + Halt(1); + end; + FillChar(barr, SizeOf(barr), $ff); + asm + mov w, 2 + end; + if (barr[10,-7] <> 2) or (barr[10,-7+1] <> 0) or (barr[10,-7+2] <> 255) or + (barr[9,100] <> 255) then + begin + Writeln('Error!'); + Halt(1); + end; + FillChar(barr, SizeOf(barr), $ff); + asm + mov b, 1 + end; + if (barr[11,-7] <> 1) or (barr[11,-7+1] <> 255) or (barr[10,100] <> 255) then + begin + Writeln('Error!'); + Halt(1); + end; + Writeln('Ok!'); +end. diff --git a/tests/test/cpu16/i8086/tasmabs5.pp b/tests/test/cpu16/i8086/tasmabs5.pp new file mode 100644 index 0000000000..6d31bac649 --- /dev/null +++ b/tests/test/cpu16/i8086/tasmabs5.pp @@ -0,0 +1,46 @@ +{ %cpu=i8086 } + +program tasmabs5; + +{ NOT TP7 compatible (TP7 doesn't support absolute with an index) } + +{$ASMMODE INTEL} +{$ASMCPU 80386} + +var + barr: array [8..12, -7..100] of byte; + l: longint absolute barr[9,17]; + w: word absolute barr[10,53]; + b: byte absolute barr[11,62]; +begin + FillChar(barr, SizeOf(barr), $ff); + asm + mov l, 4 + end; + if (barr[9,17+0] <> 4) or (barr[9,17+1] <> 0) or (barr[9,17+2] <> 0) or + (barr[9,17+3] <> 0) or (barr[9,17+4] <> 255) or (barr[9,17-1] <> 255) then + begin + Writeln('Error!'); + Halt(1); + end; + FillChar(barr, SizeOf(barr), $ff); + asm + mov w, 2 + end; + if (barr[10,53] <> 2) or (barr[10,54] <> 0) or (barr[10,55] <> 255) or + (barr[10,52] <> 255) then + begin + Writeln('Error!'); + Halt(1); + end; + FillChar(barr, SizeOf(barr), $ff); + asm + mov b, 1 + end; + if (barr[11,62] <> 1) or (barr[11,63] <> 255) or (barr[11,61] <> 255) then + begin + Writeln('Error!'); + Halt(1); + end; + Writeln('Ok!'); +end.