Comment faire pour traduire un programme assembleur en C ?
Avez vous des tutoriaux a conseiller?
J ai qq bases en C, et une bonne formation en Delphi.
Merci !
@->--
Comment faire pour traduire un programme assembleur en C ?
Avez vous des tutoriaux a conseiller?
J ai qq bases en C, et une bonne formation en Delphi.
Merci !
@->--
Avant de Poster Lire les Regles! Merci
-------------------------------------------------
"The only Way for Evils to Triumph is for Good Men to Do Nothing"
Edmund Burke (1729 - 1797)
Je precise le langage de depart est du DSP pour ADSP2181 de Analog Devices.
Et je dois traduire ca vers le C.
Voila,
Merci de votre aide car j ai beau parcourir le forum de fonte en comble et je trouve pas ce que je cherche !
@->--
Avant de Poster Lire les Regles! Merci
-------------------------------------------------
"The only Way for Evils to Triumph is for Good Men to Do Nothing"
Edmund Burke (1729 - 1797)
RE RE Salut,
Bon je vois que mon sujet a beaucoup de succces.
Bon en faisant quelques recherches je me suis appercu que ma traduction de L asm vers le C aura besoin d un "*.h" maison. Normalement celui devrai contenir des infos sur les registres et ports dont j ai besoin.
Par consequent j aimerai savoir si je mets pele mele les codes suivants dans un .h ca va fonctioner:
plus
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
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40 .const PTR_TO_GET_CHAR = 0x3e08; { function pointer to receive a byte.} .const CHAR_WAITING_FLAG = 0x3e09; { 0=byte waiting, 1=nothing in } .const PTR_TO_OUT_CHAR = 0x3e0a; { function pointer to send a byte. } .const CHAR_SEND_DONE_FLAG = 0x3e0b; { 0=sending, 1=idling } .const CHAR_RECEIVING_FLAG = 0x3e0c; { 0=recving, 1=idling } .const L_ADC_IN = 0x3e01; { left channel input } .const R_ADC_IN = 0x3e02; { right channel input } .const L_DAC_OUT = 0x3e05; { left channel output } .const R_DAC_OUT = 0x3e06; { right channel output } .const IDMA = 0x3fe0; .const BDMA_BIAD = 0x3fe1; .const BDMA_BEAD = 0x3fe2; .const BDMA_BDMA_Ctrl = 0x3fe3; .const BDMA_BWCOUNT = 0x3fe4; .const PFDATA = 0x3fe5; .const PFTYPE = 0x3fe6; .const SPORT1_Autobuf = 0x3fef; .const SPORT1_RFSDIV = 0x3ff0; .const SPORT1_SCLKDIV = 0x3ff1; .const SPORT1_Control_Reg = 0x3ff2; .const SPORT0_Autobuf = 0x3ff3; .const SPORT0_RFSDIV = 0x3ff4; .const SPORT0_SCLKDIV = 0x3ff5; .const SPORT0_Control_Reg = 0x3ff6; .const SPORT0_TX_Channels0 = 0x3ff7; .const SPORT0_TX_Channels1 = 0x3ff8; .const SPORT0_RX_Channels0 = 0x3ff9; .const SPORT0_RX_Channels1 = 0x3ffa; .const TSCALE = 0x3ffb; .const TCOUNT = 0x3ffc; .const TPERIOD = 0x3ffd; .const DM_Wait_Reg = 0x3ffe; .const System_Control_Reg = 0x3fff;
Voila, merci
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 .CONST PortA = 0x0000; .CONST PortB = 0x0001; .CONST PortC = 0x0002; .CONST PPICTRL=0x0003;
@->--
Avant de Poster Lire les Regles! Merci
-------------------------------------------------
"The only Way for Evils to Triumph is for Good Men to Do Nothing"
Edmund Burke (1729 - 1797)
Salut,
Ca m'a tout l'air d'etre ca.
Mais la tu ne fais que declarer des constantes. A un moment ou a un autre tu auras besoin de definir des procedures en assembleur que tu pourras appeler en C. Par exemple tu ecis une procedure qui affiche une chaine de caracteres baptisee print_word avec pour variable une chaine de caractere, en C tu fais
print_word word;
ou word est ta chaine de caractere, et y'a bon.
Si tu reunis tes procedures ds un .h tu l'inclus et tu peux les appeler.
Moi quand je faisais ca je faisais carrement des .c que j'incluais donc tu peux aussi ecrire un fichier en c du style:
Est ce que ca t'aide?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 print_word (word) { _asm { [ta procedure en asm utilisant la variable word] } }
"Le Quebec est une terre d'avenir et Montreal sera bientot New York"
Luke
Pour l instant j ai ecris mon fichier .h de cette facon:
Comme le C est un langage paranthese je me suis dis que si je laisse des accolodate ben ca risque de pas marcher !
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
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45 .const PTR_TO_GET_CHAR = 0x3e08; // function pointer to receive a byte. .const CHAR_WAITING_FLAG = 0x3e09; // 0=byte waiting, 1=nothing in .const PTR_TO_OUT_CHAR = 0x3e0a; // function pointer to send a byte. .const CHAR_SEND_DONE_FLAG = 0x3e0b; // 0=sending, 1=idling .const CHAR_RECEIVING_FLAG = 0x3e0c; // 0=recving, 1=idling .const L_ADC_IN = 0x3e01; // left channel input .const R_ADC_IN = 0x3e02; // right channel input .const L_DAC_OUT = 0x3e05; // left channel output .const R_DAC_OUT = 0x3e06; // right channel output .const IDMA = 0x3fe0; .const BDMA_BIAD = 0x3fe1; .const BDMA_BEAD = 0x3fe2; .const BDMA_BDMA_Ctrl = 0x3fe3; .const BDMA_BWCOUNT = 0x3fe4; .const PFDATA = 0x3fe5; .const PFTYPE = 0x3fe6; .const SPORT1_Autobuf = 0x3fef; .const SPORT1_RFSDIV = 0x3ff0; .const SPORT1_SCLKDIV = 0x3ff1; .const SPORT1_Control_Reg = 0x3ff2; .const SPORT0_Autobuf = 0x3ff3; .const SPORT0_RFSDIV = 0x3ff4; .const SPORT0_SCLKDIV = 0x3ff5; .const SPORT0_Control_Reg = 0x3ff6; .const SPORT0_TX_Channels0 = 0x3ff7; .const SPORT0_TX_Channels1 = 0x3ff8; .const SPORT0_RX_Channels0 = 0x3ff9; .const SPORT0_RX_Channels1 = 0x3ffa; .const TSCALE = 0x3ffb; .const TCOUNT = 0x3ffc; .const TPERIOD = 0x3ffd; .const DM_Wait_Reg = 0x3ffe; .const System_Control_Reg = 0x3fff; .const PortA = 0x0000; .const PortB = 0x0001; .const PortC = 0x0002; .const PPICTRL=0x0003;
Je vais me replonge dans mon travail et en particulier orienter mes recherches vers comment ecrire de l asm dans le C car a ce que j ai vu c est pas tout a fait la meme synthaxe.
@->--
Avant de Poster Lire les Regles! Merci
-------------------------------------------------
"The only Way for Evils to Triumph is for Good Men to Do Nothing"
Edmund Burke (1729 - 1797)
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager