0
this free bookでx86の基本を学んでいます。x86実行可能ファイルを実行しているときに "16434不正なハードウェア命令./a.out"というエラーが発生する
とmacOS x86はLinux x86と比較して覚えておいてください。
GNU Linux用に作られているので、おそらく私が間違っていたコードの一部を変更する必要があります。私はa.out
にコンパイルgcc test.s
を使用して、これをコンパイル
.data
.text
.globl _main
_main:
movl $1, %eax
movl $0, %ebx
int $0x80
:私はこれにコードのそのビットを回したMacOSでのx86についてグーグルでのビットの後
.section .data
.section .text
.globl _start
_start:
movl $1, %eax
movl $0, %ebx
int $0x80
:私はこのコードスニペットを取りました。 ./a.out
を使用して実行しようとすると、エラー[1] 17301 illegal hardware instruction ./a.out
が発生します。
ご協力いただきありがとうございます。
osxシステムコール規約は、syscall番号を含めて異なります。代わりにosxの例を取得するだけです。 – Jester
@Jester [OK]を確認します。あなたは良い資源を知っていますか?編集:Nvm、私はこのサイトを見つけました:http://www.idryman.org/blog/2014/12/02/writing-64-bit-assembly-on-mac-os-x/あなたは答えたいと思いますか?私? – jabbathehutt1234
割り込みを実行する代わりにlibcを呼び出してシステムコールを行うことを検討してください。これはより移植性があります(同じアセンブリプラットフォームを多くのUnix上で実行できる可能性があります)。 – fuz