- アセンブラ初心者スレッド
697 :デフォルトの名無しさん[]:2015/04/30(木) 22:48:02.55 ID:0+PJlfoo - GASアセンブリについて質問です。 ubuntu14.10をインストールして現在標準でついてるgccを使ってアセンブリを勉強しています。
サンプルのプログラムを入力したのですが、エラーの原因が分かりません サンプルコード .set EXIT, 1 .set READ, 3 .set WRITE, 4 .data PROMPT: .string "input string >> " .bss var: .skip 16, 0x00 .text .global main main: pushl $PROMPT call print call scan pushl $var call print call exit print: movl 4(%esp) ,%ecx movl $1, %ebx # 標準出力へ movl $1, %edx # 1文字出力 続く
| - アセンブラ初心者スレッド
698 :デフォルトの名無しさん[]:2015/04/30(木) 22:50:24.85 ID:0+PJlfoo - 続き
write: cmpb $0x00, (%ecx) # null文字かどうか je write_end movl $WRITE, %eax # write int $0x80 incl %ecx # 次の文字 jmp write write_end: ret scan: movl $READ, %eax # readシステムコール xorl %ebx, %ebx # 標準入力から movl $var, %ecx # バッファを指定 movl $16, %edx # 16バイト読み込み int $0x80 ret exit: movl $EXIT, %eax # exit movl $0, %ebx # 終了コード0 int $0x80
| - アセンブラ初心者スレッド
699 :デフォルトの名無しさん[]:2015/04/30(木) 22:50:58.40 ID:0+PJlfoo - 続き
すると、 invalid instruction suffix for `push' という、アセンブラのエラーが出ます。 これはアセンブラ側に問題があるのでしょうか? プログラムの問題?ハード側? 解らないヽ(´o`; 色々試してみましたが、pushlの「l」のことを指しているのかとも思いましたが、解決策が見つかりません。 <スペック> PC:レグザPC Windows7(64bit) USBHDD:ubuntu14.10 CPU:インテル Core i7 2670QM メモリ:8GB どうかよろしくお願いします。
|
|