p
u
b
l
i
c
i
t
é
publicité
  1. #1
    Invité de passage
    Inscrit en
    juin 2010
    Messages
    14
    Détails du profil
    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
    Inscrit en
    juin 2007
    Messages
    1 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : juin 2007
    Messages : 1 617
    Points : 2 773
    Points
    2 773

    Par défaut

    Ça ressemble à une bête faute de frappe, le bon code serait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    Inscrit en
    juin 2010
    Messages
    14
    Détails du profil
    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
    Inscrit en
    juin 2007
    Messages
    1 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : juin 2007
    Messages : 1 617
    Points : 2 773
    Points
    2 773

    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
    Inscrit en
    juin 2010
    Messages
    14
    Détails du profil
    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 ?

Discussions similaires

  1. Réponses: 1
    Dernier message: 14/01/2013, 13h16
  2. attendre 1 seconde entre deux fonctions
    Par urousseau dans le forum C++Builder
    Réponses: 8
    Dernier message: 08/06/2008, 19h14
  3. Fusionner deux fonctions sur un graphique
    Par droma dans le forum MATLAB
    Réponses: 2
    Dernier message: 30/01/2007, 08h51
  4. Fusionner deux images, en fonction d'une condition
    Par Him dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 27/01/2007, 13h07
  5. [TreeMap] comparer et fusionner deux TreeMap
    Par LoLoSS dans le forum java.util
    Réponses: 6
    Dernier message: 06/09/2004, 11h49

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo