je voudrais mettre une partie de code en asm dans un prog écrit principalement en c
(je sais que c faisable, en c++ par ex)
merci
c'est parfaitement faisable.
il fo que tu utilises cette syntaxe :
asm("MON_CODE_ASM")
et tu remplace MON_CODE_ASM par ce que tu veux coder en ASM.
Attention, il ne faut pas utilser de l'ASM A68k, mais du GNU ASM.
(va voir la doc de TIGCC, c'est pas mal expliqué)
sinon, tu peux mettre des fonctions en A68k dans un autre fichier...
niuob Le 03/02/2002 à 14:10 Ca s'appelle de l'assembleur en-ligne (inline).
qd on fait asm("CODE")
c'est de l'ASM in-line.
mais qd on met ds un autre fichier, ce n'en est plius...
oui c bien ca mais g toujour un erreur (je veux utiliser un boucle)
vous pouvez me donner un pti example ?
TiMad Le 03/02/2002 à 15:22 asm("moveq #0,%d0; TRAP #4")
XLib v1.00 Powerrrrrrrrrrrrrrrrrrrr!
oui ca ca marche, merci
mais je n'arrive pas a utiliser des boucle comme par ex:
ASM"( move.l LCD_MEM,%a0
lea 1500(%a0),%a0
move.w #374,%d0
loop1 move.l 0xFFFFFFFF,(%a0)+
dbra %d0,loop1")
il,tigcc, ne "comprend pas" le loop1
":" apres le loop1 peut-etre
PpHd Le 04/02/2002 à 08:44 Utilise un fichier separe.
Rajoute un extern machin_fct(short int x);
et en ficher externe, tu peux utilser de l'A68k au lieu de GNU ASM...
=> c'est plus pratique !
(le GNU ASM n'est expliqué nulle part, alors que tous les tutos ASM du net expliquent le 'A68k.)
Mais il suffit de mettre les 2 points après loop1 et son exemple marche! Je préfère moi aussi A68k (sinon je ne passerais pas mon temps à le maintenir), mais il ne faut pas exagérer. L'assembleur GNU n'est pas aussi dangereux que vous croyez.
[edit]Edité par Kevin Kofler le 04-02-2002 à 14:42:27[/edit]
PpHd Le 04/02/2002 à 14:49 Il est surtout plus lourd : rajouter un % pour chaque registre, c'est TRES chiant.
c'est clair !!!
vivement les passages de paramètres par registres ! Il n'y aura plus besoin d'écrire de macro ASM GNU pour le faire !
PpHd Le 04/02/2002 à 19:33 Si c'est un ptr, c'est dans a0. Si c'est un entier, c'est dans d0.
Sic.
je crois que oui, les valeurs de retour sojt passées dans d0, et les adresses de retour dans a0
mais il faut pas se planter dans le prototype en C de la fonction (je crois)
sinon, pour l'ASM inlin et donc pas dans ton cas, à priori, du moins , pas pour les fonctions, mais les macros), tu peux utiliser de l'extended ASM
LhA Le 09/02/2002 à 14:17 >l'ASM A68k, mais du GNU ASM.
a part le % a rajouter en + c quoi les autres differences
Des joueurs de brood war ici? /w TIman[sL] [br] L’abondance de paroles inutiles est un symptôme certain d’infériorité mentale.