MIPS, stack pointer & frame pointer
Répondre à la discussion
Affichage des résultats 1 à 2 sur 2

MIPS, stack pointer & frame pointer



  1. #1
    invite33aaecaa

    MIPS, stack pointer & frame pointer


    ------

    Bonjour à tous,

    Je me présente; je suis un étudiant en 2ème année de Licence en Informatique.
    Je ne suis pas sûr d'être dans la bonne rubrique, mais bref, je viens à vous car j'ai un problème de compréhension avec un exercice d'architecture des ordinateurs. Il s'agit d'un programme en langage assembleur MIPS.
    La prof nous à donné un premier programme en C++ :


    Code:
    int bar (int arg1, int arg2) {
      return (arg1+arg2);
    }
    
    void main () {
      int i=2;
      int j=0;
      j = bar(i,j);
    }
    
    
    Qui se traduit par celui-ci en langage assembleur: 
    
    
    	.text
    	.globl	bar
    bar:
    	addiu	$sp,$sp,-8
    	sw	$fp,4($sp)
    	move	$fp,$sp
    	sw	$4,8($fp)
    	sw	$5,12($fp)
    	lw	$3,8($fp)
    	lw	$2,12($fp)
    	nop
    	addu	$2,$3,$2
    	move	$sp,$fp
    	lw	$fp,4($sp)
    	addiu	$sp,$sp,8
    	j	$31
    	nop
    
    	.globl	main
    
    main:
    	addiu	$sp,$sp,-32
    	sw	$31,28($sp)
    	sw	$fp,24($sp)
    	move	$fp,$sp
    	li	$2,2			# 0x2
    	sw	$2,16($fp)
    	sw	$0,20($fp)
    	lw	$4,16($fp)
    	lw	$5,20($fp)
    	jal	bar
    	nop
    
    	sw	$2,20($fp)
    	move	$sp,$fp
    	lw	$31,28($sp)
    	lw	$fp,24($sp)
    	addiu	$sp,$sp,32
    	j	$31
    	nop
    Aucun problème pour comprendre le code en C++, mais par contre pour l'autre code j'ai vraiment du mal avec les registres sp et fp, "stack pointer" et "frame pointer". J'ai cherché pas mal de temps sur le web mais je suis pas parvenu à trouver une explication me permettant de comprendre ce programme ^^.
    Pour commencer, je connais plus ou moins leur fonction, mais surtout, je comprends absolument pas l'utilité des lignes type "move $fp,$sp" ou le fait de devoir stocker des registres pour les recharger juste après, enfin bref, si quelqu'un pouvait m'expliquer les principales étapes et les fonctionnements de ce code ca me sauverait !

    Merci d'avance !

    -----
    Dernière modification par Antoane ; 30/10/2017 à 15h11. Motif: Ajout balises code

  2. #2
    PA5CAL

    Re : MIPS, stack pointer & frame pointer

    Bonsoir

    Compte tenu de ton niveau d'étude et du sujet de l'exercice, il paraît étonnant que tu viennes chercher de l'aide sur ce forum.

    En effet, ta demande suggère que tu ne sais pas vraiment en quoi consiste une architecture matérielle, ce qu'est un langage assembleur ni comment le langage C manipule classiquement la pile. On peut de ce faire conclure que tu n'as pas dû lire tes cours et que tu ne sais pas non plus utiliser les moteurs de recherche sur Internet.

    J'en veux pour preuve que j'ai présenté ce soir ta demande à un lycéen, actuellement en classe de 1ère, pas spécialement calé en informatique et qui ignorait de quoi il retournait, et qu'il a pu trouver tout seul et en moins d'une demi-heure toutes les explications du code présenté ci-dessus sur les sites trouvés par Gogol, incluant ce qui concerne les registres de l'architecture MIPS, la liste de référence des instructions assembleur MIPS, et l'intérêt et l'usage du stack pointer et du frame pointer.

    D'une part, s'agissant seulement d'explications sur les principes, ta question apparaît comme beaucoup trop ouverte. Or, le forum n'est pas le lieu pour re-publier des cours exhaustifs sur ces sujets.

    D'autre part, s'agissant des explications détaillées, on aurait pu comprendre que tu demandes des éclaircissements sur quelques points précis. Mais affirmer que tu n'aurais rien compris ni trouvé après avoir longuement cherché sonne comme une tentative pour nous faire faire à ta place un exercice scolaire sans par ailleurs consentir aucun effort. Et cela n'est pas acceptable.

    Une lecture attentive des pages données en lien ci-dessus et un minimum de travail de ta part devraient suffire à déduire les explications recherchées, lesquelles te seront certainement très utiles (sinon absolument nécessaires dans leur principe, puisqu'il s'agit de bases de l'informatique pratique) si tu souhaites vraiment continuer ton cursus dans ce domaine.

Discussions similaires

  1. [Brun] astra 28° pointer
    Par invite00fcea09 dans le forum Dépannage
    Réponses: 16
    Dernier message: 05/03/2014, 14h25
  2. [Divers] pointer une parabole
    Par invite2ee39e44 dans le forum Dépannage
    Réponses: 2
    Dernier message: 19/11/2010, 17h46
  3. Pointer Par Soudure
    Par invite3a7c99a3 dans le forum Électronique
    Réponses: 2
    Dernier message: 02/03/2007, 16h55
  4. Pointer une planète ?????
    Par invite4a52f6c9 dans le forum Matériel astronomique et photos d'amateurs
    Réponses: 2
    Dernier message: 29/08/2006, 19h59
  5. Pointer une planète
    Par invitee7707ca4 dans le forum Archives
    Réponses: 1
    Dernier message: 26/12/2005, 08h02