+ Répondre à la discussion
Affichage des résultats 1 à 5 sur 5
  1. #1
    Invité de passage
    Profil pro zvenden atchum
    Inscrit en
    juin 2010
    Messages
    14
    Détails du profil
    Informations personnelles :
    Nom : zvenden atchum

    Informations forums :
    Inscription : juin 2010
    Messages : 14
    Points : 1
    Points
    1

    Par défaut Fusionner deux fonctions en caml

    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.

  2. #2
    Rédacteur
    Avatar de SpiceGuid
    Homme Profil pro Damien Guichard
    Inscrit en
    juin 2007
    Messages
    1 576
    Détails du profil
    Informations personnelles :
    Nom : Homme Damien Guichard
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : juin 2007
    Messages : 1 576
    Points : 2 710
    Points
    2 710

    Par défaut

    Ça ressemble à une bête faute de frappe, le bon code serait :
    Code :
    1
    2
    | RTLabs.St_cst (op2, destr, src1, src2, cst, lbl) ->
    Cependant il y a quand même un problème : tantôt tu utilises le constructeur RTLabs.St_cst avec 3 arguments, mais ici tu l'utilises avec 6 arguments
    Du même auteur: le cours OCaml, le dernier article publié, le blog dvp et le jeu vidéo.
    Avant de poser une question je lis les règles du forum.

  3. #3
    Invité de passage
    Profil pro zvenden atchum
    Inscrit en
    juin 2010
    Messages
    14
    Détails du profil
    Informations personnelles :
    Nom : zvenden atchum

    Informations forums :
    Inscription : juin 2010
    Messages : 14
    Points : 1
    Points
    1

    Par défaut

    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

  4. #4
    Rédacteur
    Avatar de SpiceGuid
    Homme Profil pro Damien Guichard
    Inscrit en
    juin 2007
    Messages
    1 576
    Détails du profil
    Informations personnelles :
    Nom : Homme Damien Guichard
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : juin 2007
    Messages : 1 576
    Points : 2 710
    Points
    2 710

    Par défaut

    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 blog dvp et le jeu vidéo.
    Avant de poser une question je lis les règles du forum.

  5. #5
    Invité de passage
    Profil pro zvenden atchum
    Inscrit en
    juin 2010
    Messages
    14
    Détails du profil
    Informations personnelles :
    Nom : zvenden atchum

    Informations forums :
    Inscription : juin 2010
    Messages : 14
    Points : 1
    Points
    1

    Par défaut

    Sinon , est ce que tu sais comment récupérer la valeur d'un registre ?

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •