1

msasm で icc を使用してアセンブラーをインラインで実行しようとしています。

int main (void)
{
  __asm{
    mov eax, 5h;  //works
    push eax;     // after shell command /opt/intel/bin/icc -use_msasm asm.c:
                  // asm.c(7): (col. 5) error: Unsupported instruction form in asm                          
                  // instruction push.

   //pop ebp;    // the same 
        };

printf("success!\n");
return 1;
}

icc がプッシュとポップを受け入れない理由を知っている人はいますか?

前もって感謝します!

4

1 に答える 1

1

代わりに x64 バージョンのレジスタを使用する必要があります。したがって、正しいバージョンは次のようになります。

__asm{
    mov rax, 5h;
    push rax;
};

また、ポインタ、0x8******* などを扱うときは、アーキテクチャの違いに注意してください。最初にインラインを読み取らずに、バッチ検索と置換を使用しないでください。

于 2018-07-19T08:16:48.167 に答える