1

だから私はObjective-Cの実行可能ファイルにこのアセンブリを含めようとしています:

__asm volatile(
               "pushl %[a5]\n\t"
               "pushl %[a4]\n\t"
               "call %%ebx\n\t"
               "addl  $8, %%esp\n\t"               
               : "=a" (result)
               :  "b" (FuncPtr), "a" (MyVal), "d" (MyVal2), "c" (MyVal3), [a5] "r" (iOut), [a4] "r" (a4)
               : "memory"
               );

GCCコンパイラを使用すると、正常にコンパイルされますが、上記を使用した関数の戻り時に、GCCが適切なud2a命令をスローするのに対して、コンパイル時にエラーをスローするだけでエラーがスローされます(gdbでキャッチされます)。

Apple LLVM コンパイラを使用すると、「push %[a4]\n\t」という行に対して、「サイズ サフィックスのない命令ニーモニックの不明な使用」というエラーが表示されます。

これが何を意味するのか誰にも分かりませんか?上記を適切に機能させるためにどのように適応させる必要があるかについて、私は完全に途方に暮れています。

注: これがやろうとしていることです: a5、a4 をスタックにプッシュします。FuncPtr を ebx に移動し、MyVal を eax に移動し、MyVal2 を edx に移動し、MyVal3 を ecx に移動して、ebx を呼び出します。

4

0 に答える 0