特定の関数 ( CまたはC++ ) パラメーターを特定のレジスターに配置するgccを作成できますか? たとえば、このレジスタをベースとして利用するネイキッド コードで使用する関数プロトタイプを定義したいと考えています。私はこのようなことを意味しますが、関数パラメーターに向かっています。
質問する
703 次
1 に答える
1
特定の関数パラメーターを特定のレジスターに配置するように要求することはできません。これは、関数パラメーターが関数に渡される方法がアーキテクチャの ABI によって定義されているためです。たとえば、x86-64 では、最初の 6 つの (整数) パラメータが、レジスタ%rdi
、%rsi
、%rdx
、%rcx
、%r8
およびに渡されます%r9
。
できることは、ローカルレジスタ varsを使用して、指定したように、特定のローカル変数をレジスタに割り当ててから、パラメータをそのローカル変数にコピーすることです。これにより、パラメーターがそのレジスターにコピーされます。
そうは言っても、なぜこれが欲しいのですか?
于 2013-01-08T08:19:11.847 に答える