lenzuolo-di-sotto-con-angoli-spugna-180-200-violetto_1_Farbe_weiss.jpgBuongiorno a tutti, sto studiando il passaggio dei parametri per area stack con il processore motorola 68000. (CLICCATE SUL LINK DELL'IMMAGINE CHE SPIEGA IL PASSAGGIO PARAMETRI AREA STACK, SCUSATE L'HO CREATA IO SU UNO SFONDO BIANCO, NON FATE CASO AL NOME XD)
Volevo fare qualche domanda inerente al discorso dell'area stack.
Supponiamo (ipotesi iniziale ) che l'indirizzo della base dell'area stack parte da $30.
Prima istruzione:
MOVE.L A1,-(A7)
STO EFFETTUANDO UN PUSH E STO DICENDO DECREMENTA DI UNA LONG WORD =4 BYTE (PASSO DA $30 A $26) E METTI REGISTRO A1 ALL'INDIRIZZO $26.
Prima domanda:
Quando decrementa SP , lo fa della quantita' indicata dal "size" della Move? o della dimensione del registro A1? Oppure sono equivalenti i due dicorsi?
Quindi passo da $30 a $26 e fin qui ci siamo.
Ora devo riservare un po' di spazio di memoria per il risultato (un sottoprogramma lo fa ma non e' questo il dubbio).
Seconda istruzione:
SUB.L #2,A7
Passa da $26 a $24 .
Seconda domanda:
Vorrei capire se il mio ragionamento e' giusto. Quando sottrae #2 ad A7, vuol dire che sottrae due BYTE?perche' a conti fatti $24 e $26 differiscono di due byte. perche' non capisco il senso di mettere a SUB un size "L".
Terza istruzione:
JSR CONTA
Qui penso che ci sono perche e' come se mettesse l'indirizzo di ritorno all'indirizzo $20 perche' l'indirizzo di ritorno si prende 4 BYTE e quindi differirebbe da $24 proprio di 4 BYTE. Fa un vero e proprio PUSH su stack di 4 BYTE.
Qualcuno puo aiutarmi per i miei dubbi ?
Ringrazio anticipatamente.