ポインターを eax にプッシュし、別のポインターを ebx レジスターにプッシュする必要があります。私は最初にこれを解決しました:
register int eax asm("eax");
register int ebx asm("ebx");
int main()
{
eax = ptr1;
ebx = ptr2;
}
これは魅力のように機能しました。しかし、これを他のコードに追加すると、コードのまったく無関係な部分で、gcc がクラス AREG にスピルするレジスタを見つけられないという奇妙なエラーが発生しました。ググったところ、実際にはgccのバグであることが判明しました-.-。したがって、2 つのポインターを eax および ebx レジスターにプッシュする別の方法が必要です。誰でもアイデアはありますか?
編集:
ここで私が何を達成しようとしているのかと人々から尋ねられたので、少し説明したいと思います。
プログラムで実行しようとしているアセンブリ コードの eax と ebx を変更する必要があります。このアセンブリ コードを実行し、eax および ebx レジスタを介してパラメーターへのポインターを与える必要があります。ebx でアセンブリ コードへのポインターをプッシュし、ebx を呼び出して、アセンブリ コードを実行します。レジスターをグローバルではなくローカルで呼び出すと、アセンブリ コードがクラッシュします。グローバルに呼び出すと、ランダム関数の最後でこの奇妙なエラーが発生します。その関数を削除すると、別のランダム関数で同じエラーがスローされます。関数がなくなるまでは機能しますが、残りのコードが恋しいです:P