Ejemplo n.º 1
0
int Basic_block::nb_cycles(){
  
 /*** A COMPLETER ***/

  /**** DEBUT: TP3 Question2 ****/

  int nbCycles = size();
  int i, j, k, gel;
  Instruction *current, *tmp;
  
  for(i=1; i<size(); i++){
    current = get_instruction_at_index(i);
    /* calcul du nombre de gel */
    gel = 0;
    for(j=0; j<current->get_nb_pred(); j++){
      tmp = current->get_pred_dep(j)->inst;
      k = (delai(tmp->get_type(), current->get_type()))
	- (current->get_index() - tmp->get_index());
      gel = (gel > k) ? gel : k;
    }
    nbCycles += gel;
  }
  
  /**** FIN: TP3 Question2 ****/
  return nbCycles;
}
Ejemplo n.º 2
0
// Création de la fenêtre à l'écran. Cette méthode n'existe que pour pouvoir se passer 
// de constructeur avec paramètres pour les débutants en C++.
void Fenetre::apparait(const char *titre, int large, int haut, int x, int y, int r, int v, int b) {
    if (!existe) {    
    	fenetre = gtk_window_new(GTK_WINDOW_TOPLEVEL); // création de la fenêtre
    	gtk_window_set_title(GTK_WINDOW(fenetre), titre); // mise en place du titre
    	gtk_window_set_default_size (GTK_WINDOW(fenetre), large, haut); // taille minimale
    	
        // mise en place d'un contenant dans cette fenêtre
        contenant = gtk_vbox_new (FALSE, 0);
        gtk_container_add (GTK_CONTAINER (fenetre), contenant);
        gtk_widget_show (contenant);
    
        /* Création de la zone graphique pour la fenêtre */
        zoneDeDessin = gtk_drawing_area_new ();
        gtk_widget_set_size_request (GTK_WIDGET (zoneDeDessin), large, haut);
        gtk_box_pack_start (GTK_BOX (contenant), zoneDeDessin, TRUE, TRUE, 0);
        gtk_widget_show (zoneDeDessin);
        
        dessin=NULL; // pas de bitmap pour le moment il sera crée par l'exposition
        boutonAppuye=-1; // indicateurs pour la souris non positionnés
        sourisX=-1; sourisY=-1;
        fond.red=r; fond.green=v; fond.blue=b; // couleur de fond selon paramètre
        existe=TRUE; // le fenêtre est utilisable
    
        /* Signaux utilisés pour fermer la fenêtre */
    	g_signal_connect(G_OBJECT(fenetre), "destroy", 
                G_CALLBACK(Fenetre::relais_supprime_event), this);
        g_signal_connect(G_OBJECT(fenetre), "delete_event", 
                G_CALLBACK(Fenetre::relais_detruire_event), this);
                
        /* Signaux utilisés pour rafraîchir l'écran */
        g_signal_connect (G_OBJECT (zoneDeDessin), "expose_event",
    		    G_CALLBACK (Fenetre::relais_expose_event), this);
        g_signal_connect (G_OBJECT (zoneDeDessin), "configure_event",
    		    G_CALLBACK (Fenetre::relais_configure_event), this);

        /* Signaux utilisés pour la souris */
        g_signal_connect (G_OBJECT (zoneDeDessin), "motion_notify_event",
    		    G_CALLBACK (Fenetre::relais_bouge_event), this);
        g_signal_connect (G_OBJECT (zoneDeDessin), "button_press_event",
    		    G_CALLBACK (Fenetre::relais_bouton_event), this);

         // signaux autorisés dans la zone de dessin
        gtk_widget_set_events(zoneDeDessin, GDK_EXPOSURE_MASK
            | GDK_LEAVE_NOTIFY_MASK
            | GDK_BUTTON_PRESS_MASK
            | GDK_POINTER_MOTION_MASK
            | GDK_POINTER_MOTION_HINT_MASK);
    
        choixFonte("times"); // fonte initiale
        
        gtk_widget_show_all(fenetre); // visible
    
        deplacerEn(x,y); // position initiale de la fenêtre
		delai(100); // ce délai est nécessaire pour que la première écriture dans la fenêtre soit prise en compte
		effacer(); // au départ la fenêtre est de la couleur de fond choisie
        }
}