|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Sep 2003
Messaggi: 9434
|
[Assembly 68000] Stack pointer e Frame pointer
Ciao a tutti ragazzi
vorrei una manina per quanto riguarda questi argomenti, che sono poco simpatici Lo stack pointer (SP) è il puntatore allo stack che indica istante per istante l'ultimo elemento presente nelo stack (ultimo vuol dire in cima) Push carica dato nello stack facendo salire lo SP (cioè decremento), mentre con pop si preleva il dato dallo stack e SP scende (cioè lo si incrementa). Questo Frame pointer cosa sarebbe?lo si introduce quando si parla della subrutine. a questo proposito, c'è il comando JSR (salto alla subrutine) vado a salvare l'indirizzo di ritorno presente nel Program Counter, cioè facccio un push sullo stack, memorizzando anche i parametri di input e di output Mentre RTS (ritorno dalla subrutine) fa un'operazione di pop per quanto riguarda ciò che aveva salvato JSR ora sulle slides c'è scritto che questa parte di memoria dello stack riservata per memorizzare queste cose , viene acceduto da un frame pointer che è un registro indirizzo Cosa potete dirmi al riguardo? ciao e grazie
__________________
1)P4 2.4-Asrock p4i65- Sapphire Hd3450 512mb agp- 2GB ddr400-Hd 80gb WD- Thermaltake Litepower 450W 2)Amd 3200-Msi K8n Neo4 Platinum - 2*512 MB pc3200-Asus N6600gt- HD WD 160GB-enermax noisetacker 370. |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Ma di quale assembly parli ?
|
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Sep 2003
Messaggi: 9434
|
di quello per il 68000
__________________
1)P4 2.4-Asrock p4i65- Sapphire Hd3450 512mb agp- 2GB ddr400-Hd 80gb WD- Thermaltake Litepower 450W 2)Amd 3200-Msi K8n Neo4 Platinum - 2*512 MB pc3200-Asus N6600gt- HD WD 160GB-enermax noisetacker 370. |
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
I primi due link che ho trovato:
http://www-scm.tees.ac.uk/users/a.cl...o/LNKnotes.htm http://www.scarpaz.com/2005-Didattic...oprogrammi.pdf Si capisce che il Frame Pointer è il puntatore al record di attivazione, cioè alle informazioni necessarie per ripristinare l'esecuzione del chiamante. |
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Sep 2003
Messaggi: 9434
|
ma quindi il JSR permette di memorizzare tutto ciò che potrà servire, dopo lo svolgimento della subrutine, a ritornare al programma principale.
e queste cose memorizzate nello stack vengono puntate dal frame pointer?
__________________
1)P4 2.4-Asrock p4i65- Sapphire Hd3450 512mb agp- 2GB ddr400-Hd 80gb WD- Thermaltake Litepower 450W 2)Amd 3200-Msi K8n Neo4 Platinum - 2*512 MB pc3200-Asus N6600gt- HD WD 160GB-enermax noisetacker 370. |
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Sì. Guarda il pdf che ti ho linkato, c'è l'immagine esatta di ciò che avviene.
|
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: Sep 2003
Messaggi: 9434
|
si l'avevo visto, ma quindi si può dire che il frame pointe serve per memorizzare dove bisogna ritornare sull ostack, per poter andare avanti col programma chiamante?
__________________
1)P4 2.4-Asrock p4i65- Sapphire Hd3450 512mb agp- 2GB ddr400-Hd 80gb WD- Thermaltake Litepower 450W 2)Amd 3200-Msi K8n Neo4 Platinum - 2*512 MB pc3200-Asus N6600gt- HD WD 160GB-enermax noisetacker 370. |
|
|
|
|
|
#8 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Serve come base per ripristinare lo stack pointer e ripristinare il frame pointer precedente. Comunque guarda sul pdf l'uso delle istruzioni LINK e UNLK.
Di fatto identifica la base dello stack locale alla funzione. |
|
|
|
|
|
#9 |
|
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
Serve per due cose: memorizzare il puntatore allo stack per poi recuperarlo prima di tornare al chiamante, e permettere di accedere alle variabili locali alla subroutine allocate sullo stack.
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro @LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys |
|
|
|
|
|
#10 |
|
Senior Member
Iscritto dal: Oct 2006
Città: Roma
Messaggi: 1383
|
in realtá il frame pointer é utile solo per scopi di debug e puó essere tranquillamente omesso; adesso non so le particolaritá dell'architettura 68000, ma ad esempio il compilatore Microsoft ha l'opzione /Oy ed il gcc ha l'opzione -fomit-frame-pointer.
|
|
|
|
|
|
#11 |
|
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
Nei 68000 con LINK puoi specificare anche un offset per allocare spazio sullo stack, oltre a conservare il vecchio SP.
E' un'istruzione molto utile per i compilatori di linguaggi ad alto livello. L'ho vista usare parecchio con questi.
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro @LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 07:30.




















