Oppure

Loading
06/11/15 18:06
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.
06/11/15 18:26
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.
aaa
06/11/15 18:37
nessuno
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à.
06/11/15 18:53
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:
push A
push 5
add

mentre se utilizzassi un GPR dovrei scrivere qualcosa come:
mov Ax, A
add Ax, 5

cosa cambia??
Ultima modifica effettuata da 06/11/15 18:54
06/11/15 19:09
nessuno
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à.
06/11/15 19:21
mi è stato solamente detto che lo stack pointer è come una pila e quindi utilizza la logica LIFO
06/11/15 19:23
nessuno
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à.
06/11/15 21:38
TheDarkJuster
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ù.
aaa