Sono venuto a sapere che non si può spingere un byte direttamente sullo stack di Intel Pentium, qualcuno può spiegarmelo per favore?Perché non è possibile inserire un byte su una pila su Pentium IA-32?
Il motivo che mi è stato dato è perché il registro esp è indirizzato alla parola (o, questo è l'assunto nel nostro modello) e deve essere un "indirizzo uniforme". Avrei pensato di decrementare il valore di qualche numero binario a 32 bit che non avrebbe incasinato l'allineamento del registro, ma apparentemente non capisco abbastanza.
Ho provato alcuni test NASM e ho scoperto che se dichiaro una variabile (bite db 123) e la sposto nello stack, esp è decrementata di 4 (indicando che ha spinto 32 bit?). Ma, "push byte morso" (scusate per la mia scelta di nomi di variabili) si tradurrà in un errore di genere:
test.asm: 10: errore: non supportato non a 32 bit delocalizzazione ELF
Alcune parole di la saggezza sarebbe molto apprezzata durante questo periodo travagliato. Sono uno studente di primo anno così dispiaciuto per la mia ingenuità in tutto questo.
Molto informativo, ma purtroppo ancora al di sopra di quello che posso cogliere con le mie attuali conoscenze. –
@Tim - Understandable. Forse vale ancora una lettura veloce. –
Aspetta, aspetta. Ogni posizione di memoria ha una larghezza di 32 bit, quindi se si preme un valore, decrementerà lo stack di 4 byte, perché 4 * 8 è di 32 bit e, se decrementato di 2, tenterebbe di creare un valore non allineato leggere, implodere l'universo? È giusto? Se è così, ottieni i punti, quel PDF è stato fantastico (2 °). –