asm ARM64/AARCH64 Barrelshifter wird ignoriert

Für alles, was in den übrigen Lazarusthemen keinen Platz, aber mit Lazarus zutun hat.
Antworten
dermischka
Beiträge: 1
Registriert: Mo 15. Feb 2021, 16:38

asm ARM64/AARCH64 Barrelshifter wird ignoriert

Beitrag von dermischka »

Hallo,

ich habe ein Problem mit den ARM64-Assembler (AARCH64).

wenn ich bei einen "add" den barrel shifter benutzen möchte, dann wird dieser ignoriert.

z.B.

Code: Alles auswählen

asm
   add x1, x1, x7, lsl #3
end;
der obige Code soll folgendes ausführen:

x1 := x1 + (x7 shl 3)

Im Assembler Fenster kann man folgendes für diese Zeile sehen:
<codeAddress> 2100078b add x1, x1, x7

anhand der Registerwerte sieht man auch, dass der shift tatsächlich nicht umgesetzt wurde.

Wer kann mir sagen, wo ich diesen Bug poste bzw. an welcher Stelle man vielleicht das selbst fixen könnte.

der Mischka

Socke
Lazarusforum e. V.
Beiträge: 2968
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: asm ARM64/AARCH64 Barrelshifter wird ignoriert

Beitrag von Socke »

Hallo Mischka,
Die Bugs sind am Besten im Bugtracker unter https://bugs.freepascal.org aufgehoben
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

PascalDragon
Beiträge: 394
Registriert: Mi 3. Jun 2020, 07:18
OS, Lazarus, FPC: L 2.0.8, FPC Trunk, OS Win/Linux
CPU-Target: Aarch64 bis Z80 ;)
Wohnort: München

Re: asm ARM64/AARCH64 Barrelshifter wird ignoriert

Beitrag von PascalDragon »

dermischka hat geschrieben:
Mo 15. Feb 2021, 16:46
Wer kann mir sagen, wo ich diesen Bug poste bzw. an welcher Stelle man vielleicht das selbst fixen könnte.
Wie Socke geschrieben hat, am Besten im Mantis melden.

Falls du dich selbst daran versuchen möchtest, der AArch64 Assembly Reader ist in $fpcdir/compiler/aarch64/racpugas.pas. Öffne am Besten das $fpcdir/compiler/ppcaarch64.lpi Projekt, dann kannst du dich nämlich auch durch debuggen (du musst als Startparameter dann auch die Pfade zur RTL und so weiter einstellen). An sich hat der Reader Unterstützung für den Barrelshifter, aber wahrscheinlich ist da noch irgendwo ein Bug.
FPC Compiler Entwickler

FPK
Beiträge: 65
Registriert: Mi 21. Mai 2008, 19:38
Wohnort: Erlangen

Re: asm ARM64/AARCH64 Barrelshifter wird ignoriert

Beitrag von FPK »

Ich habe gerade mit trunk getestet (aarch64-linux), da passt alles:

Code: Alles auswählen

begin
  asm
     add x1, x1, x7, lsl #3
  end;
end.

Code: Alles auswählen

0000000000000000 <main>:
   0:	a9bf7bfd 	stp	x29, x30, [sp, #-16]!
   4:	910003fd 	mov	x29, sp
   8:	94000000 	bl	0 <fpc_initializeunits>
   c:	8b070c21 	add	x1, x1, x7, lsl #3
  10:	94000000 	bl	0 <fpc_do_exit>
  14:	d65f03c0 	ret
  
Mit welcher Version/welchem OS tritt das Problem auf?

Antworten