すべてはタイトルにあります。いくつかの理由で、私はこのようにしなければなりません。
しかし、コードをコンパイルすると、GCC (または GAS など) に次のエラーが表示されます。
.../Temp/cc1C1fjs.s:19: エラー: 絶対ジャンプでは即値オペランドが不正です
コード:
int main ( int argc, char **argv )
{
/* Some code */
( (void(*)()) &&label)();
/* Some code */
return 0;
label:
asm ("push %ebp");
asm ("mov %esp,%ebp");
/* Some code */
printf("Hello world");
asm ("leave");
asm("ret");
}
ラベルのアドレスをエントリ ポイントとして指定する CreateThread 関数 (私は Windows の下にいます) を使用してスレッドを作成しようとしたため、これが機能するはずであり、完全に機能するはずです。では、コンパイラがこの構文を受け入れるようにするにはどうすればよいでしょうか? または、それを行うための別の方法がありますか?