-
compilateur gnu 68 k
bonjour , je ne sais pas si je me trouve dans le bon forum..
Je dois faire un portage d' un compilo vers un compilo gnu 68 k ( j'ai pris celui sur le site ashware) .. donc ca se passe a peu pres pas trop mal, seulement j'ai gardé pour le moment l'assembleur de l'ancien compilo. En fait dans certains fichier c , il y a du code assembleur inseré , et la le compilo ne veut rien savoir , il comprend pas la syntaxe asm(""). Pouvez m'aider ? y a t'il une syntaxe particuliere ?
Merci pour votre aide
-
par 68k, doit-on comprendre Motorola 68000 ?
l'assembleur est spécifique à chaque microprocesseur
et ASM est, je crois, spécifique a Intel x86
cherchez sur google à "assembleur Motorola 68000"
-
en fait ce n'est pas la syntaxe asm ("xxx") qu 'il refuse mais certaine instructions, je me reexplique un peu mieux ( je vais essayer du moins )
en fait je passe d'un compilo crosscode a un compilo gnu. par contre je ne prends pas l'assembleur fournit avec gnu , je garde le precedant.
Apres, tous les fichiers .s se compile normalement, logique puisque je garde l'ancien assembleur et je n'ai pas modifié les fichier .s . par contre des qu'il y a du code assembleur dans le c , la se ne marche plus, je pense la qu'il utilise l'assembleur du gnu , en fait certaine instruction marche et d'autre pas ..
par exemple dans l'exemple suivant , il refuse la derniere instruction le movem alors que le premier passe sans probleme
asm(// #pragma ASM
".set S_PtTrame,8",
".set S_NbByteTrame,$e ",
".set S_WriteBit,$13",
"movem.l d1-d2/a0,-(a7)",
"move.l (S_PtTrame,a6),a0 ",
"move.w (S_NbByteTrame,a6),d0",
"move.b (a0),d2",
"lsl.b #1,d2",
"or.b (S_WriteBit,a6),d2",
"move.b d2,(a0)",
"suba.l #1,a0",
"bcldecal",
"cmpi.w #1,d0 ",
"beq.b findecal",
"move.b (a0),d2",
"roxl.b #1,d2",
"move ccr,d1",
"move.b d2,(a0)",
"suba.l #1,a0",
"subi.w #1,d0",
"move d1,ccr",
"bra.b bcldecal",
"findecal",
"roxl.b #1,d0",
"andi.b #1,d0",
"movem.l (a7)+,d1-d2/a0"
);