WinCEとLinuxはARMで同じ呼び出し規約を使用していますか?違いは何ですか?
私がこれまでに見つけた文書は、あまりよく説明されていません。たとえば、http://msdn.microsoft.com/en-us/library/ms864497.aspxでは、1行に「WindowsCE .NETコンパイラ」と表示されていますが、次の行に「ARMコンパイラ」と表示されています。 「下部にあり、同じコンパイラを参照しているのか、異なるコンパイラを参照しているのかは明確ではありません。これが私がこれまでに見つけたものです...
- ARM呼び出しシーケンス仕様(WinCE)-不十分に記述されたドキュメント
- ARMからCへの呼び出し規約(Linux)-非公式の説明
- ウィキペディア-OSは指定されておらず、構造体、浮動小数点数、または64ビット数の処理方法や、レジスターに収まらない場合に追加の引数が配置される場所については説明されていません。
- 更新:ARMアーキテクチャのプロシージャコール標準-ついに包括的なドキュメントを見つけましたが、どのオペレーティングシステムが標準に準拠しているか(またはそれらのOSが課す可能性のあるバリアントや追加の制約)はわかりません。
私が尋ねる理由は、WinCEでLLVMを使用して実行時にいくつかの単純なコードを生成してみたいのですが、公式にはLinuxしかサポートしていません。