|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() zvenden atchum Inscription : juin 2010 Messages : 14 ![]() |
Bonsoir ,
Je suis en train de faire un projet de compilation en utilisant Ocaml, et comme je ne suis pas familier avec ce langage , j'ai vraiment du mal à avancer. Ma question est : comment fusionner deux fonctions en caml ? Je m'explique : La première fonction elle s'appelle : RTLabs.St_op2 : en gros elle effectue une opération binaire , elle additionne le contenu du registre srcr1 au contenu du registre srcr2 et stocke le resultat dans destr. | RTLabs.St_op2 (op2, destr, srcr1, srcr2, lbl) -> let v = Eval.op2 (get_type lenv destr) (get_type lenv srcr1) (get_type lenv srcr2) op2 (get_value lenv srcr1) (get_value lenv srcr2) in assign_state sfrs graph sp lbl lenv mem trace destr v La deuxième fonction elle s'appelle : RTLabs.St_cst : celle là elle assigne une constante à un registre tout simplement. | RTLabs.St_cst (destr, cst, lbl) -> let v = Eval.cst mem sp (get_type lenv destr) cst in assign_state sfrs graph sp lbl lenv mem trace destr v Moi ce que je voudrais faire : programmer une fonction qui ajouteune constante cst au contenu du registre srcr et stocke le résultat dans le registre dstr ; Voilà ce que j'ai fait : | RTLabs.St_cst (op2, destr, srcr1, src2, cst, lbl) -> let x = RTLabs.St_cst (src1, cst, lbl) in /* c'est là ou je bloque car je ne sais pas comment récupérer src1 !!!! */ Merci d'avance. |
|
|
00
|
|
|
#2 | ||
![]() ![]() Damien GuichardInscription : juin 2007 Messages : 1 512 ![]() |
Ça ressemble à une bête faute de frappe, le bon code serait :
Code :
__________________
Du même auteur: le cours OCaml, le dernier article publié, le projet, le blog dvp et le jeu vidéo. Avant de poser une question je lis les règles du forum. |
||
|
00
|
|
|
#3 |
|
Invité de passage
![]() zvenden atchum Inscription : juin 2010 Messages : 14 ![]() |
Merci pour ta réponse ,
C'est vrais que j'ai fait qq fautes de frappes mais c'était pas ça ma question , je voulais savoir comment appeler une fonction au sein d'une autre ça ressemble un peu à ça : |RTLabs.St_addi (op2, destr, srcr1, srcr2, cst, lbl) -> let ??? = RTLabs.St_cst (src1, cst, lbl) in let ??? = RTLabs.St_op2 (op2, destr, src1, src2, lbl) in assign_state sfrs graph sp lbl lenv mem trace destr ??? mais c'est pas exactement ça |
|
|
00
|
|
|
#4 |
![]() ![]() Damien GuichardInscription : juin 2007 Messages : 1 512 ![]() |
Tu ne peux pas 'récupérer' les valeurs de src1 et src2 si tu n'es pas dans une portée où elles ont été définies.
Dans ton exemple on est dans une portée où srcr1 et srcr2 ont été définies, mais pour src1 et src2 on ne sait pas.
__________________
Du même auteur: le cours OCaml, le dernier article publié, le projet, le blog dvp et le jeu vidéo. Avant de poser une question je lis les règles du forum. |
|
00
|
|
|
#5 |
|
Invité de passage
![]() zvenden atchum Inscription : juin 2010 Messages : 14 ![]() |
Sinon , est ce que tu sais comment récupérer la valeur d'un registre ?
|
|
|
00
|
Copyright © 2000-2013 - www.developpez.com