簡単なアセンブリを書いて、実行したいです。
サンプルコードは、以下のようなものです。
assembly
1.intel_syntax noprefix 2.global plus, main 3 4plus: 5 add rsi, rdi 6 mov rax, rsi 7 ret 8 9main: 10 mov rdi, 3 11 mov rsi, 4 12 call plus 13 ret
こちらのサイトを参考にして、オブジェクファイルを作成し、実行ファイルに変換しようとしました。
as -o test.o test.s
そうすると、以下のようなエラーが返ってきます。
test.s: Assembler messages: test.s:5: Error: too many memory references for `add' test.s:6: Error: too many memory references for `mov' test.s:10: Error: ambiguous operand size for `mov' test.s:11: Error: ambiguous operand size for `mov'
この場合、考えられることはどれでしょうか。
- アセンブリの構文が間違っている
- 実行ファイルの作り方が間違っている
- その両方
- どれでもない(出直してこい)
いくつかのサイトを調べたところ、似たようなエラーがアドレス指定の間違いで起きるみたいですが、.intel_syntax noprefixを宣言すると%が省略できると書いてあったので、オブジェクトファイルの作り方に問題があるのかなと考えています。
低レイヤの低レベルな質問ですが、どうぞ宜しくお願いします。
追記:
$ as -v GNU assembler version 2.32 (mingw32) using BFD version (GNU Binutils) 2.32
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2020/05/16 05:14