Intel Pentium のスタックに 1 バイトを直接プッシュできないことを知りました。これについて誰か説明してもらえますか?
私が与えられた理由は、esp レジスタがワード アドレス指定可能 (または、モデルの仮定) であり、「偶数アドレス」でなければならないためです。32 ビットの 2 進数の値をデクリメントしても、レジスターのアライメントが乱れることはないと思っていたのですが、どうやら十分に理解できていないようです。
NASM テストをいくつか試してみたところ、変数を宣言し (db 123 を噛む)、それをスタックにプッシュすると、esp が 4 減ります (32 ビットをプッシュしたことを示していますか?)。しかし、「プッシュ バイト バイト」(変数名の選択については申し訳ありません) は一種のエラーになります。
test.asm:10: エラー: サポートされていない非 32 ビット ELF 再配置
この困難な時期に知恵の言葉をいただければ幸いです。私は学部 1 年生です。