0

特定の関数 ( CまたはC++ ) パラメーターを特定のレジスターに配置するgccを作成できますか? たとえば、このレジスタをベースとして利用するネイキッド コードで使用する関数プロトタイプを定義したいと考えています。私はこのようなことを意味しますが、関数パラメーターに向かっています。

4

1 に答える 1

1

特定の関数パラメーターを特定のレジスターに配置するように要求することはできません。これは、関数パラメーターが関数に渡される方法がアーキテクチャの ABI によって定義されているためです。たとえば、x86-64 では、最初の 6 つの (整数) パラメータが、レジスタ%rdi%rsi%rdx%rcx%r8およびに渡されます%r9

できることは、ローカルレジスタ varsを使用して、指定したように、特定のローカル変数をレジスタに割り当ててから、パラメータをそのローカル変数にコピーすることです。これにより、パラメーターがそのレジスターにコピーされます。

そうは言っても、なぜこれが欲しいのですか?

于 2013-01-08T08:19:11.847 に答える