Se connecter / S'enregistrer
Votre question

[ASM-Résolu]Différenciation saut relatif avec un autre...

Tags :
  • Programme
  • Programmation
Dernière réponse : dans Programmation
3 Octobre 2006 21:01:36

Bonjour...

Il y a peu de temps, je suis passé de la programmation de microcontroleur Atmel AT90S4433 a mes ATMega161L...Que je programment a l'aide d'AVR Studio en Assembleur...

Et il y a un truc que je comprend pas...

Pour le AT90S4433, lors d'un appel d'une sous-routine stockée dans la pile (pour faire simple, il s'agit tout simplement des labels en Basic...Ce système permet en fait au compilateur de lier une adresse physique de la mémoire programme stockée dans la pile (StackPointer) a un nom que l'on peut définir comme on le veut), il n'y avait pas beaucoup de choix au niveau instructions: icall pour les appel indirect (en se basant sur une adresse de 16 bits stockées dans des registres de travail) et rcall pour les appels d'adresse stockées en pile.
Mais là avec le ATMega161L, il y a 3 type d'appel: icall qui effectue les même opérations que précédemment et call (saut direct) ou rcall(saut relatif) pour les appel d'adresse en pile...

Est-ce que quelqu'un saurait me détailler la différence entre rcall et call O_o?? (Qui se chargent tous deux d'appeler une adresse stockée en pile...Mais il y a forcémment une différence entre les deux sinon les instructions n'auraient pas été crées)

Merci d'avance

Autres pages sur : asm resolu differenciation saut relatif

a b L Programmation
3 Octobre 2006 22:51:38

J'ai un peu regardé la doc d'un de ton controleur, je dirai que c'est comparable avec les far jump (call) et near jump (rcall) sur PC.

le rcall est relatif à l'adresse courante, alors que le call est absolu.
Par exemple, si tu te trouves à l'adresse 0x0030:
- rcall 0x0002 amène sur 0x0032
- call 0x0002 amène sur 0x0002

EDIT: quand tu fais appel, tu mets un nom de label, mais en fait derrière le nom est modifié en adresse. Dans un cas, c'est traduit par une adresse absolue et dans l'autre une adresse relative (qui permet une relocation du programme indépendemment de l'adresse mémoire initiale).
4 Octobre 2006 08:30:34

Aaaah d'accord...merci beaucoup...
Contenus similaires
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS