Discussion: un offset 4 ?

  1. #1
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    novembre 2016
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : novembre 2016
    Messages : 12
    Points : 10
    Points
    10

    Par défaut un offset 4 ?

    bnjour tt le monde ,

    bn je suis encore débutante en l'assembleur .. j'étais entrain de faire un exam pour m'entrainer tt que je suis encore étudiante , j'avais rencontré un petit problème pour l'une des questions bn je vais commencer par vous présenter le code de ce programme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
     
    	ORG	$0FF8000
    START:	MOVE.L  #$0FFFFFE,A7
    	MOVE    $0FF9000,D0
    	MOVE    D0,-(A7)
     
     
    	JSR    ADD
    RES	NOP
    	NOP
    	TRAP #0	
     
    ADD  MOVE   4(A7),D1
    	MOVE   D1,D0
    BCL	SUBQ   #1,D1
     
    	ADD    D1,D0
    	CMP    #1,D1 
    	BNE    BCL
    FIN 	       RTS	
     
    * Variables and Strings
     
     
     
    	END	START
    pour commencer le ss programe ADD effectue une addition n+(n-1)+....+1

    y'avait une question "pk on doit avoir l'offset 4 sur la première instruction 4(A7)?" je vois pas pk le 4 le move D0,-(A7) decrémente A7 que par 2
    si vs pouvez me donner un coup de main en cette question j'en serai reconnaisente

  2. #2
    Expert confirmé
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    mai 2010
    Messages
    2 059
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cyber-paléontologue

    Informations forums :
    Inscription : mai 2010
    Messages : 2 059
    Points : 5 829
    Points
    5 829

    Par défaut

    le 68000, Processeur qui a eu un énorme suces dans les années 80-90 (on le foutait partout / ordi/borne d'arcade/console de jeux) , mais bref pour ton souci le A7 est le Stack pointeur.
    Alors reprenons "MOVE 4(A7),D1" signifie qu'on déplie la pile donc il réutilise ce qu'il a mis sur D0 soit $0FF9000.
    Il me semble que MOVE D0,-(A7) ,que le move est par 'defaut' sur 4octets (pour les adresses).
    Mais je pense que le code pour qu'il soit plus clair aurait du être écrit comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    MOVE.L    $0FF9000,D0
    MOVE.L    D0,-(A7)
    et donc "MOVE 4(A7),D1" aurait plus de sens.

    Maintenant si tu veux mon avis l'utilisation de la pile sur le M68000 (et surtout sur ton code) ne sert pas a grand chose je le déconseillerai carrément , le M68000 possède 8 registres (D0 à D7) donc tu as de quoi faire et de plus l’accès a la pile sur le 68000 est plutôt long (12-16 cycle) et le registre/registre coûte 4 cycle , même mémoire/registre ne coûte que 8 cycle ! Alors qu'un compilateur C face ce genre de bêtise pourquoi pas (et encore ça m'étonnerai) autant si on code en asm en utilisant les instructions plutôt longue (et pas super compréhensible faut l'avouer :p ) ça va pas aidé.
    La pile n'est utilisé en général que pour sauvegardé l'état des registres (pour x ou n raison d'ailleurs , interruption/appel de fonction en gros).

  3. #3
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    novembre 2016
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : novembre 2016
    Messages : 12
    Points : 10
    Points
    10

    Par défaut merci :D !

    merci kannaji

Discussions similaires

  1. erreur Undefined offset
    Par wbagg2 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 01/12/2005, 15h16
  2. Erreur de "Undefined offset"
    Par guy2004 dans le forum Fonctions
    Réponses: 8
    Dernier message: 16/10/2005, 13h48
  3. Patch modifiant l'offset d'un .exe
    Par Goshi dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 18/02/2005, 19h24
  4. Qu'est ce qu'un offset
    Par gtr dans le forum Assembleur
    Réponses: 8
    Dernier message: 06/12/2002, 09h53

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