Problema allocazione dati nello stack

di il
3 risposte

Problema allocazione dati nello stack

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

  • Re: Problema allocazione dati nello stack

    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...
  • Re: Problema allocazione dati nello stack

    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)?
  • Re: Problema allocazione dati nello stack

    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