0

このアドレス構成を使用したいのですが、これは遠い記憶に基づいてサポートされており、どこを見てもサポートされていますが、何らかの理由でコンパイラ/アセンブラが混乱します。

mov rax, [rsi+rcx*8]

コンパイラは、* に対してエラーをスローします。

error: unknown token in expression mov rax, [rsi+rcx*8]
                                                    ^

これらの指示は完全に受け入れられます。

mov rax, [rsi+rcx]; 
mov rax, [rsi+rcx+8]

では、コンパイラがスケールをサポートしていないか (まるで?)、スケールが 64 ビット モードでサポートされていないのでしょうか?

これはXcode 4.6で、おそらくLLVMを使用していますが、これはフロッピードライブの時代以来初めてのアセンブラープロジェクトなので、誰が解析しているのかわかりません。確かに .intel_syntax が指定されています。asm はインラインではなく .s ファイルにあります。

x86_64 モードが問題なのでしょうか? Intel のドキュメントから、「64 ビット アドレッシングは既存の 32 ビット ModR/M および SIB エンコーディングを使用する」とありますが、SIB バイトのスケール ビットは無視されますか?

どうもありがとう

4

0 に答える 0