Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
Hardware - a cosa serve il registro stack pointer?
Forum - Hardware - a cosa serve il registro stack pointer?

Pagine: [ 1 2 3 ] Precedente | Prossimo
Avatar
()
Newbie


Messaggi:
Iscritto:

Segnala al moderatore
Postato alle 1:00
Giovedì, 01/01/1970
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.

PM Quote
Avatar
TheDarkJuster (Member)
Guru^2


Messaggi: 1459
Iscritto: 27/09/2013

Segnala al moderatore
Postato alle 19:26
Venerdì, 06/11/2015
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.

PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 5475
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 19:37
Venerdì, 06/11/2015
Per capire il significato del registro SP devi avere chiaro il concetto di "stack".


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
PM Quote
Avatar
()
Newbie


Messaggi:
Iscritto:

Segnala al moderatore
Postato alle 19:53
Venerdì, 06/11/2015
Testo quotato

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

  1. push A
  2. push 5
  3. add


mentre se utilizzassi un GPR dovrei scrivere qualcosa come:
Codice sorgente - presumibilmente Plain Text

  1. mov Ax, A
  2. add Ax, 5


cosa cambia??

Ultima modifica effettuata da il 06/11/2015 alle 19:54
PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 5475
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 20:09
Venerdì, 06/11/2015
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 ...
PM Quote
Avatar
()
Newbie


Messaggi:
Iscritto:

Segnala al moderatore
Postato alle 20:21
Venerdì, 06/11/2015
mi è stato solamente detto che lo stack pointer è come una pila e quindi utilizza la logica LIFO

PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 5475
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 20:23
Venerdì, 06/11/2015
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 ...
PM Quote
Avatar
TheDarkJuster (Member)
Guru^2


Messaggi: 1459
Iscritto: 27/09/2013

Segnala al moderatore
Postato alle 22:38
Venerdì, 06/11/2015
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ù.

PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 5475
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 8:43
Sabato, 07/11/2015
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 ...
PM Quote
Pagine: [ 1 2 3 ] Precedente | Prossimo