Software > Coding
Syntaxanpassungen für GNU as?
simonsunnyboy:
Hallo zusammen,
wie ich gerade feststellen musste, hat der GNU as einen ziemlichen anderen, um nicht obskuren Syntax.
Kann mir daher jmd sagen, wie ich a) folgendes Codestück mit Devpac/TurboAssembler/PureC/AHCC Syntax auf den GNU as Syntax für meinen Crsscompiler umbiege
--- Code: ---; *******************************************
; clear truecolor screen 320x240 pixels at a0
; *******************************************
TC320x240_CLS:
movem.l d0-a6,-(sp)
move.l #((320*240/16)-1),d0
lea clrbuf(PC),a1
movem.l (a1),d1-d7/a2
clrloop:
movem.l d1-d7/a2,(a0)
lea 32(a0),a0 ; 32 = 4*8 bytes
dbra d0,clrloop
movem.l (sp)+,d0-a6
rts
clrbuf: DC.L 0,0,0,0,0,0,0,0
EVEN
--- Ende Code ---
und b) ob da ggfs Coldfire unverträgliche Opcodes drin sind? Ich versuch aktuell mit dem gcc 030/Coldfire kompatibeles Zeugs zu erzeugen, und nebenbei vom AHCC auf gcc zu wechseln...
Grüße,
ssb
mfro:
a)
--- Code: ---| *******************************************
| clear truecolor screen 320x240 pixels at a0
| *******************************************
TC320x240_CLS:
movem.l d0-a6,-(sp)
move.l #320*240/16-1,d0
lea clrbuf(PC),a1
movem.l (a1),d1-d7/a2
clrloop:
movem.l d1-d7/a2,(a0)
lea 32(a0),a0 | 32 = 4*8 bytes
dbra d0,clrloop
movem.l (sp)+,d0-a6
rts
clrbuf: DC.L 0,0,0,0,0,0,0,0
.align(2)
--- Ende Code ---
b)
bis auf die movem's (Coldfire kann kein movem mit Prädekrement oder Postinkrement) und dbra (gibt's im Coldfire-Befehlssatz nicht mehr) ist die Codesequenz "Coldfire-clean".
simonsunnyboy:
Danke für die schnelle Antwort, mit nachgeschobenem *würg*
Gerade die movems sind sowas von nützlich :(
Ich schätz, ich kompilier wieder nur für 030 und Bienenuser müssen halt FireTOS nehmen...
Die Callingconvention beim gcc ist immer noch a0-a1 für Adressen, d0-d2 für normale Variablen?
(Meine bisherigen Disassemblies scheinen das zu bestätigen, ich möchte nur sichergehen.)
mfro:
--- Zitat von: simonsunnyboy am So 03.11.2013, 16:01:23 ---Danke für die schnelle Antwort, mit nachgeschobenem *würg*
Gerade die movems sind sowas von nützlich :(
Ich schätz, ich kompilier wieder nur für 030 und Bienenuser müssen halt FireTOS nehmen...
--- Ende Zitat ---
Wo liegt das Problem?
68000:
--- Code: ---movem.l d0-a6, -(sp)
--- Ende Code ---
Coldfire:
--- Code: ---lea -15 * 4(sp),sp
movem.l d0-a6, (sp)
--- Ende Code ---
--- Zitat von: simonsunnyboy am So 03.11.2013, 16:01:23 ---Die Callingconvention beim gcc ist immer noch a0-a1 für Adressen, d0-d2 für normale Variablen?
(Meine bisherigen Disassemblies scheinen das zu bestätigen, ich möchte nur sichergehen.)
--- Ende Zitat ---
gcc übergibt alle Variablen auf dem Stack. War das die Frage?
simonsunnyboy:
Wenn die 2 Befehle gleich viele Zyklen auf dem 030 brauchen wie das movem mit Post/Prädekrement, könnte ich es mir überlegen....
"Alles auf dem Stack" ist eine Antwort, auch die macht mir ein *würg*, und fast noch ein größeres als die fehlenden Opcodes :P
Ich fürchte, gcc/gas ist für Atari keine Option, wenn man halbwegs syntaxkompatiblen und unsauberen Code (Demos/Games) schreiben will. Für sauberen Kram wohl ne gute Wahl....
Sieht schwer danach aus, daß ich doch bei AHCC bleiben werde....
Navigation
[0] Themen-Index
[#] Nächste Seite
Zur normalen Ansicht wechseln