()
Newbie
Messaggi:
Iscritto:
|
salve ho un dubbio sul registro SP, non ho capito la sua funzione e cosa lo distingue da un registro generale come Ax e quindi come viene utilizzato.
|
|
TheDarkJuster (Member)
Guru^2
Messaggi: 1620
Iscritto: 27/09/2013
|
Il registro stack pointer punta all'ultimo elemento inserito nello stack.
Punta all'ultimo, e non al primo perchè per come è fatto lo stack, se puntasse al primo non avresti un LIFO, quindi nemmeno uno stack.
Quindi, con il registro SP NON memorizzi ciò che vuoi. Il registro SP è usato maggiormente dalla cpu, e non è un GPR.
|
|
nessuno (Normal User)
Guru^2
Messaggi: 6402
Iscritto: 03/01/2010
|
Per capire il significato del registro SP devi avere chiaro il concetto di "stack".
Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità. |
|
()
Newbie
Messaggi:
Iscritto:
|
Postato originariamente da TheDarkJuster:
Il registro stack pointer punta all'ultimo elemento inserito nello stack.
Punta all'ultimo, e non al primo perchè per come è fatto lo stack, se puntasse al primo non avresti un LIFO, quindi nemmeno uno stack.
Quindi, con il registro SP NON memorizzi ciò che vuoi. Il registro SP è usato maggiormente dalla cpu, e non è un GPR. |
l'argomento lo stiamo e affrontando in classe (e si sa come funziona...) ma fin qui ci sono, vorrei sapere invece perché dovrei utilizzare uno Stack Pointer e non un GPR, ad esempio se volessi creare un programma in assembler che fa A+5 utilizzando lo stack pointer dovrei scrivere qualcosa come:
Codice sorgente - presumibilmente Plain Text |
mentre se utilizzassi un GPR dovrei scrivere qualcosa come:
Codice sorgente - presumibilmente Plain Text |
cosa cambia??
Ultima modifica effettuata da il 06/11/2015 alle 19:54 |
|
nessuno (Normal User)
Guru^2
Messaggi: 6402
Iscritto: 03/01/2010
|
Intanto di quale CPU (e assembly) parliamo?
Nelle 3 righe di codice che hai mostrato non ha senso la finale Add ...
Mi pare che tu non abbia ancora chiaro il concetto di "stack" e il suo utilizzo (ad esempio, quando viene chiamata una subroutine per memorizzare l'indirizzo di rientro). Quando lo avrai chiaro, comprenderai anche il significato dello SP e il suo particolare uso.
Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità. |
|
()
Newbie
Messaggi:
Iscritto:
|
mi è stato solamente detto che lo stack pointer è come una pila e quindi utilizza la logica LIFO
|
|
nessuno (Normal User)
Guru^2
Messaggi: 6402
Iscritto: 03/01/2010
|
Ok ... quindi ti consiglio di approfondire l'utilizzo dello stack per la CPU e solo dopo capire a cosa serve il registro SP e perché è diverso dai registri generici.
Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità. |
|
TheDarkJuster (Member)
Guru^2
Messaggi: 1620
Iscritto: 27/09/2013
|
Beh tutte le CPU hanno almeno uno stack pointer, che sia visibile o meno dal programmatore. tutte le cpu intel e amd prevedono uno stack pointer, persino quelle basate su arm/xscale e derivate. I PIC hanno uno stack pointer a 6,8 o 12 livelli...... Insomma, specificare la cpu non aggiunge nulla al concetto di stack pointer.... al massimo ci sono differenze organizzative, ma nulla di più.
|
|
nessuno (Normal User)
Guru^2
Messaggi: 6402
Iscritto: 03/01/2010
|
Non è proprio così perché se lo stack pointer non è accessibile il problema di usare o meno il registro SP non si pone. In alcuni device puoi gestire il SP piú o meno liberamente anche se è quasi sempre una pessima idea farlo.
In alcuni PIC lo stack è limitato e implementato in hw senza la possibilità di accedere al registro SP, in altre come la 6502 il registro S c'è ed è in parte utilizzabile e accessibile, mello Z80 puoi fare anche delle addizioni con il registro SP e via dicendo.
Dal punto di vista teorico si può parlare di SP indicandone lo scopo e l'utilizzo principale, ma se si fanno domande specifiche bisogna "calarsi" nelle varie realtà delle implementazioni.
Ultima modifica effettuata da nessuno il 07/11/2015 alle 8:45
Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità. |
|