short jmp命令を使えなくて困っています。
以下、short jmp命令を使ったhelloプログラム
s
1.globl main 2main: 3jmp short run3 4 5run2: 6movl $4,%eax 7movl $1,%ebx 8pop %rcx 9movl $13,%edx 10int $0x80 11movl $1,%eax 12movl $0,%ebx 13int $0x80 14 15run3: 16 call run2 17.asciz "hello" 18 19
(尚、NULLバイト除去のため今後8ビットレジスタを使用予定)
アセンブルして実行すると・・・
junk sample after expression
というエラーが出てきます。
google翻訳を使うと、表現後のsample・・・?
試しに、jmp short命令ではなくjmp命令にしたところ
正常に実行できました。
なので、call段階でのリターンアドレス(そもそもpushされているかわからんけど)
が原因とかではないそうです。(それはそれでpopすればいいだけだけど・・・)
参考書が使っているコンパイラがNASMだったので、私が使っているGASでは
できないんですか?
それとも、ただただ構文が間違っているだけなのでしょうか?
分からないのでお願いします。
バイトを揃えてみた。
s
1.globl main 2main: 3jmp short run3 4 5run2: 6xor %eax,%eax 7mov $4,%AL 8xor %ebx,%ebx 9mov $1,%bl 10pop %rcx 11xor %edx,%edx 12mov $6,%dl 13int $0x80 14mov $1,%AL 15mov $0,%bl 16int $0x80 17 18run3: 19 call run2 20.asciz "hello"
全く同じエラーが吐かれたので、バイト数の問題ではないようです。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/11/17 05:07
2019/11/17 05:13
2019/11/17 05:18
2019/11/17 05:24