Problema allocazione dati nello stack

di Anonimizzato18185 il
3 risposte
Salve! Sono nuovo e mi sto cimentando nella programmazione in assembly (in particolare ho trovato una guida sul Motorola68000) per ampliare le mie conoscenze di programmazione.
Mi sono imbattuto in un curioso dilemma che non riesco a risolvere perché dalla fonte da cui sto studiando non è precisato.
In breve: voglio allocare in memoria un vettore di 5 numeri e voglio passarlo, tramite stack, ad un sotto programma che sostituisca gli ultimi tre numeri con tre zeri. Allego un breve codice:

          ORG     $8000
MAT    DC.W   1,2,2,2,1

          ORG     $8200
MAIN   PEA      MAT
          JSR      CONT
Ora nello stack c'è sia l'indirizzo del Main che pesa 4 byte sia il mio vettore: ma quanto pesa quest'ultimo? 4 byte perché contiene il primo indirizzo della locazione di memoria in cui è memorizzato il primo dato(1), oppure pesa 1 byte perché la somma dei bit per realizzare quella sequenza fa proprio 8 bit(1+2+2+2+1)?
Sembrerà banale ma sono alle prime armi!

3 Risposte

  • Ovviamente la questione della somma dei valori, bit e compagnia è assurda...

    Per capire da solo, studia cosa fa l'istruzione PEA che hai utilizzato all'inizio...
  • La pea prende l'effective address e lo mette nello stack. Quindi è equivalente a
    
              MOVE.L MAT,(SP)+
    
    (una push a tutti gli effetti)
    ?? Cioè MAT contiene l'indirizzo di memoria del primo elemento(nel mio caso 1)?
  • MAT è l'indirizzo dell'array.

    E l'indirizzo viene posto nello stack. Sempre dalla documentazione della PEA, saprai in quale formato è l'indirizzo.
Devi accedere o registrarti per scrivere nel forum
3 risposte