Confusione tra assembly ARM Endianess

4

Sto scrivendo il codice usando il linguaggio assembly assembly per college e sono davvero confuso riguardo l'endianess.

L'impostazione predefinita dovrebbe essere little endian ma sono sicuro che la stringa di test è stata memorizzata big endian . Il primo byte in memoria a 0xA1000004 è 0x30 che è 'O' , e 0xA1000007 è 'j' , ma sicuramente se il suo little endian il carattere 'j' deve essere memorizzato per primo.

Non sono sicuro se è memorizzato in modo errato o se sto leggendo la memoria sbagliata, ma sono così confuso su tutto.

Qualsiasi aiuto è stato apprezzato,

Grazie, Richard

    
posta richard davies 03.12.2017 - 17:30
fonte

2 risposte

5

La risposta di Timothy è corretta, ma non abbastanza completa da capire cosa sta succedendo qui.

Le stringhe sono una sequenza di byte; non c'è "endianness" per le stringhe perché i byte non hanno endianess.

Endianess fa riferimento all'ordine dei byte che viene utilizzato per archiviare oggetti a più byte più grandi in memoria.

Quindi, per big endian il byte più significativo è memorizzato all'indirizzo più basso per l'intervallo di memoria che memorizza l'elemento.

Per little endian, il byte meno significativo è memorizzato all'indirizzo più basso.

La cosa che ti confonde è il comportamento di uno strumento; il tuo browser di memoria mostra parole di 4 byte ed è su un piccolo sistema endian. Quindi il byte all'indirizzo più basso viene visualizzato come il byte meno significativo della parola a 4 byte.

Eg. In memoria

0x30 0x55 0x4c 0x64 ...
\ one 4 byte word /
     0x644c5530
             --
              ^- LSB, at the lowest memory address

Verifica se puoi configurare il browser della memoria per visualizzare byte anziché interi a 4 byte; vedrai che la stringa è archiviata come previsto.

    
risposta data 03.12.2017 - 22:55
fonte
3

Endianness si applica a tipi di numeri (come int / long / double ...). Hai memorizzato una stringa (una matrice / lista di caratteri). Pertanto, i byte della stringa vengono memorizzati in ordine di apparizione indipendentemente dall'endianità del processore.

    
risposta data 03.12.2017 - 18:10
fonte

Leggi altre domande sui tag