Bonjour,
j'aimerai réaliser en ASM la fonction sw intervertissant deux données d'un tableau dont les adresses des deux données sont fournies en paramètre via les registre r0 (val1) et r1 (val2)
en gros le prototype de la fonction C serait sw(int *val1, int val*2)
par contre je viens d'essayer en C ... et je ne sais pas si c'est moi mais ce que j'ai fais ne fonctionne pas :
cela m'affiche :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 #include <stdio.h> void sw(int * a, int *b) { int tmp ; tmp = *a ; *a = *b; *b = tmp ; } int main() { int a = 5 ; int b = 15 ; sw(&a,&b) ; printf("a=%d b=%d\n",a,b) ; }
a=5 b=5
en asm celà donnerait quelque chose du genre :
sw
LDR R3, [R0]
LDR R0, [R1]
MOV R1, R3
est-ce correct ?
Partager