2017-01-03 7 views
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が発生します。

ご協力いただきありがとうございます。

+5

osxシステムコール規約は、syscall番号を含めて異なります。代わりにosxの例を取得するだけです。 – Jester

+0

@Jester [OK]を確認します。あなたは良い資源を知っていますか?編集:Nvm、私はこのサイトを見つけました:http://www.idryman.org/blog/2014/12/02/writing-64-bit-assembly-on-mac-os-x/あなたは答えたいと思いますか?私? – jabbathehutt1234

+2

割り込みを実行する代わりにlibcを呼び出してシステムコールを行うことを検討してください。これはより移植性があります(同じアセンブリプラットフォームを多くのUnix上で実行できる可能性があります)。 – fuz

答えて

-1

@Jesterが私を助けました。あなたは私の質問にコメントを見ることができますが、基本的にはMacOSの規約が異なります。私は助けてくれたthisリソースを見つけました。

関連する問題