Debugger Assembler-ausgabe Typ ändern?

Für alles, was in den übrigen Lazarusthemen keinen Platz, aber mit Lazarus zutun hat.
Antworten
br_klaus
Beiträge: 244
Registriert: Do 21. Jan 2010, 22:33
OS, Lazarus, FPC: Windows Vista (L 0.9.31 FPC 2.5.1)
CPU-Target: 32Bit
Wohnort: z.z. Brasilien, sonst 82335 Berg-Leoni (südlich von München)

Debugger Assembler-ausgabe Typ ändern?

Beitrag von br_klaus »

Hallo,

soviel ich mich erinnere, gab es in den früheren Versionen (bis FPC 2.4.0) die Möglichkeit, für die Assemblerausgabe des Debuggers während des Kompilierens den Typ des Assemblers zu wählen, und zwar ging das über die Einstellungen/Debugger/...
Aber jetzt (Lazarus 0.9.31 - FPC 2.6.0) finde ich keine solche Möglichkeit mehr, und wenn ich in fpc.cfg -Rintel angebe, dann ändert sich da auch nichts, es bleibt immer der ATT-Assembler. Wie läßt sich das ändern?

Herzlichen Dank
P. Nikolaus

martin_frb
Beiträge: 592
Registriert: Mi 25. Mär 2009, 21:12
OS, Lazarus, FPC: Laz trunk / fpc latest release / Win and other
CPU-Target: mostly 32 bit

Re: Debugger Assembler-ausgabe Typ ändern?

Beitrag von martin_frb »

Nicht "Debugger" > "Compiler"

project > project options > Compiler-parsing

Keine Ahnung, wie das in der Deutschen IDE heisst

br_klaus
Beiträge: 244
Registriert: Do 21. Jan 2010, 22:33
OS, Lazarus, FPC: Windows Vista (L 0.9.31 FPC 2.5.1)
CPU-Target: 32Bit
Wohnort: z.z. Brasilien, sonst 82335 Berg-Leoni (südlich von München)

Re: Debugger Assembler-ausgabe Typ ändern?

Beitrag von br_klaus »

martin_frb hat geschrieben:Nicht "Debugger" > "Compiler"

project > project options > Compiler-parsing

Keine Ahnung, wie das in der Deutschen IDE heisst
Herzlichen Dank für den Hinweis.
Das habe ich gemacht. Aber das Ergebnis ist unverwandt: ATT (jetzt bei FPC 2.5.1, das 2.6.0 habe ich auf einem anderen PC).

statt .... heßt es ---> ....

MOV AX, $52c8e0 ---> mov 0x52c8e0,%ax
CMP EDX, 016h ---> cmp $0x16, %edx
mov ax,cx ---> mov %cx, %ax bleibt
lea ecx, [ebx] ---> LEA (%ebx), %ecx
lea ecx, [ebx*4] ---> lea 0x0(,%ebx,4),%ecx
mov ecx, [ebx+4] ---> mov 0x4(%ebx),%ecx
mov DWORD PTR [EBX],3 ---> movl 0x3,(%ebx)
mov QWOrd PTR [EBX], 3 ---> dasselbe!

selbst wenn ich das Programm neu starte und die Compiler-Parsing-Option Intel schon gestzt ist, zeigt er immer ATT. Das ist für mich sehr schwierig zu lesen (Aber jetzt weiß ich wenigstens, wie die "Hieroglyphen" zu übersetzen sind
Eigenartiger Weise hat der Compiler her keinelei Schwierigkeit, QWORD PTR zu akzeptieren (solange die Zahl 32 bit bleibt), es ist dann anscheinend identisch mit DWORD PTR.
Auch die anderen FließkommaOperationen fcomp, fnstsw Ax u.a. nimmt er anstandslos an, nur bei fildl (das habe ich im Programmcode von Lazarus selber gelesen) sagt er: Bezeichner nicht gefunden.
Das kommt bei der Stelle
if width/fwidth>height/Fheight (das sind die Größen der Form und des Timage darauf, um die bei OnResize zu aktulisieren)
da heißt es im Programmcode von Lazarus
fildl 0x450(%eax)
fildl 0x228(%ebx)
fdivp %st,%st(1)
mov -0x8(%ebp), %eax
usw.
Wenn ich genau diesen Code in asm ... end; einfüge, dann heißt es "Error: Bezeichner nicht gefunden." Wie ist das zu verstehen?

Antworten