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; }
// 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 } }