5

WinCEとLinuxはARMで同じ呼び出し規約を使用していますか?違いは何ですか?

私がこれまでに見つけた文書は、あまりよく説明されていません。たとえば、http://msdn.microsoft.com/en-us/library/ms864497.aspxでは、1行に「WindowsCE .NETコンパイラ」と表示されていますが、次の行に「ARMコンパイラ」と表示されています。 「下部にあり、同じコンパイラを参照しているのか、異なるコンパイラを参照しているのかは明確ではありません。これが私がこれまでに見つけたものです...

私が尋ねる理由は、WinCEでLLVMを使用して実行時にいくつかの単純なコードを生成してみたいのですが、公式にはLinuxしかサポートしていません。

4

2 に答える 2

2

呼び出し規約は、コンパイラによって実装されるものであり、オペレーティングシステム固有のものではありません。gccとRVCT(ARMのc / c ++コンパイラ)の両方が、前述のARMアーキテクチャのプロシージャコール規約に従うコードを生成することを確認できます。

Microsoftのドキュメントへのリンクを見ると、ARMの呼び出し規約に従っていることも確認できます。

于 2010-07-25T23:10:39.127 に答える
1

私は答えを見つけようとしたのとまったく同じ質問に出くわしました。つまり、どこで/どのドキュメントが何かを言っているか、またはLINUXで使用されるARMABIを定義しています。

次の文書は私が答えに来た最も近いものです

ARM GNU/Linux Application Binary Interface Supplement

それはCodeSourceryによるものであり、その要約にエンコードされているのは、上記の質問に対する答え、つまり次のようなものです。

Application Binary Interface (ABI) for the ARM ArchitectureARM Ltdによって公開されたドキュメント)は、ARMアーキテクチャで使用されるツールチェーン間の相互運用に必要なコンパイルとリンケージのさまざまな側面を指定します。

ただし、このドキュメントで公開されているABIは、特定のオペレーティングシステムを参照せずに設計されているため、特定されていない特定の側面があります。

どうやらCodeSourceryによるドキュメントは、GNU / Linuxオペレーティングシステムを使用するときにこれらの側面に対して行われた決定を指定することにより、ARMアーキテクチャのABIを補足することを目的としています。

このドキュメントへのリンクを1つ提供します(他のリンクはドキュメントのタイトルを検索することで見つけることができます):

http://www.boost.org/doc/libs/1_51_0_beta1/libs/context/doc/pdf/arm-linux-aapcs.pdf

LINUXでARMABIを指定する標準は存在しなかったようです。また、CodeSourceryによるドキュメントは、この側面をカバーする試みであるようです。

于 2012-12-23T06:39:55.750 に答える