[Risolto][ARM Assembly]Full ascending stack?

Linguaggi di programmazione: php, perl, python, C, bash e tutti gli altri.
Avatar utente
DoctorStrange
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1825
Iscrizione: mercoledì 14 ottobre 2015, 9:33
Desktop: Gnome3
Distribuzione: Ubuntu 18.04 Bionic Beaver
Sesso: Maschile
Località: Roma, Italia

[Risolto][ARM Assembly]Full ascending stack?

Messaggio da DoctorStrange » domenica 10 novembre 2019, 17:14

Buonasera a tutti,

Mi trovo, nella strana condizione, di dover creare per il mio miocro-controllore, usando il linguaggio ARM assembly uno stack di tipo full ascending.

Il problema è che il mio compilatore mi risponde che non lo posso fare perchè sembra che io stia usando, al momento una programmazione di tipo "Thumb", e non "ARM" nativa e quindi l'istruzione che uso per creare questo stack, viene rifiutata perchè non viene riconosciuta come istruzione appartenente al ristretto set "Thumb".

La prima domanda è: Come faccio ad escludere la programmazione thumb ed a passare a quella arm convenzionale?

Inoltre questo è la procedura che stò cercando di seguire:

Codice: Seleziona tutto

stmib r0.{r2-r3}
stmib r1,{r4-r5}
Nella mia intenzione, questo frammento di codice dovrebbe creare due stack diversi, che cominciano in due posizioni diverse della ram (r0, ed r1), e su questi indirizzi vengono fissati i registri indicati nelle parentesi graffe con la tecnica ib (increment before), ovvero, prima si incrementa l'indice, e poi si scrive il valore.

Ho trovato che esiste un -quasi- equivalente tra le istruzioni thumb, che sono push e pop, ma in queste due istruzioni non capisco in quale modo io possa indicare l'indirizzo di partenza dei due frammenti di stack. Rischierei che avrei uno stack completamente mescolato e non potrei piu estrarne i valori, secondo il mio criterio.

Avete qualche idea?

Grazie mille
Ultima modifica di DoctorStrange il mercoledì 27 novembre 2019, 14:30, modificato 1 volta in totale.

Avatar utente
runblade
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 376
Iscrizione: martedì 3 aprile 2007, 14:28
Distribuzione: 16 Valvole monoalbero in testa.
Località: Soave

Re: [ARM Assembly]Full ascending stack?

Messaggio da runblade » domenica 10 novembre 2019, 17:50

-Pensare che i videogames possano aver condizionato le menti delle persone è come se chi avesse giocato a pac-man ora ce lo ritovassimo in un ambiente buio, al suono di musica tecno, che gira attorno la pista e continuamente si impasticca...
-Non discutere mai con un idiota: ti trascina al suo livello e poi ti batte con l'esperienza

Avatar utente
DoctorStrange
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1825
Iscrizione: mercoledì 14 ottobre 2015, 9:33
Desktop: Gnome3
Distribuzione: Ubuntu 18.04 Bionic Beaver
Sesso: Maschile
Località: Roma, Italia

Re: [ARM Assembly]Full ascending stack?

Messaggio da DoctorStrange » mercoledì 27 novembre 2019, 14:29

Alla fine ho risolto mantenendo il set di istruzioni Thumb. L'inizio della mia pila corrisponde al registro SP (Stack Pointer), che sarebbe il registro R13. Impostando opportunamente lo SP all'interno del range di memoria SRAM disponibile, posso far partire lo stack ovunque io voglia, e poi servirmi di push e pop come se fossero stmib e ldmib.

Comunque grazie.

Avatar utente
runblade
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 376
Iscrizione: martedì 3 aprile 2007, 14:28
Distribuzione: 16 Valvole monoalbero in testa.
Località: Soave

Re: [Risolto][ARM Assembly]Full ascending stack?

Messaggio da runblade » lunedì 2 dicembre 2019, 12:11

Ok bene.
Normale che nelle operazioni si usi PUSH e POP con lo stack pointer: a volte non riesco a comprendere i voli pindarici che effettuate nell'operare in ASM! :p
-Pensare che i videogames possano aver condizionato le menti delle persone è come se chi avesse giocato a pac-man ora ce lo ritovassimo in un ambiente buio, al suono di musica tecno, che gira attorno la pista e continuamente si impasticca...
-Non discutere mai con un idiota: ti trascina al suo livello e poi ti batte con l'esperienza

Avatar utente
DoctorStrange
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1825
Iscrizione: mercoledì 14 ottobre 2015, 9:33
Desktop: Gnome3
Distribuzione: Ubuntu 18.04 Bionic Beaver
Sesso: Maschile
Località: Roma, Italia

Re: [Risolto][ARM Assembly]Full ascending stack?

Messaggio da DoctorStrange » lunedì 2 dicembre 2019, 12:48

Semplicemente non sono molto pratico di programmazione su stack, e quindi essendo segregato al set di istruzioni thumb, non mi era molto chiaro in quale maniera venisse allocato l'indirizzo di partenza dello stack stesso.

Ora è tutto piu chiaro.

Scrivi risposta

Ritorna a “Programmazione”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 4 ospiti