Android を搭載した Embarcadero Delphi XE5 で ARM アセンブリ コードを記述する方法と場所を教えてください。インラインで書けるならそれが一番です。
4 に答える
asm ... end
Delphi モバイル コンパイラはブロックをサポートしていません。
しかし、ネイティブコンパイラについて話しているので、「昔ながらの良い方法」がまだ利用可能です。
できることは、独自のモジュールを外部アセンブラー(GNU AS など) でコンパイルし、それを Delphi XE* アプリケーションにリンクすることです。
たとえば、System.RTTI
外部の静的にリンクされたファイルを介して低レベルの asm トリックを使用します。
procedure RawInvoke(CodeAddress: Pointer; ParamBlock: PParamBlock);
external 'librtlhelper.a' name 'rtti_raw_invoke';
procedure RawIntercept;
external 'librtlhelper.a' name 'rtti_raw_intercept';
この日本語の記事を見てみましょう- Google 翻訳はあなたの友達です!
それは不可能。
Use Atomic Instrinsics Instead of Assembly Language
.
見積もり:
Delphi モバイル コンパイラは、組み込みのアセンブラをサポートしていません。
Delphi モバイル コンパイラは、インライン アセンブラをサポートしていません。ドキュメントはこれを明確にしています:
インライン アセンブラは、次の場所で利用できます。
- DCC32.EXE、Delphi コマンド ライン コンパイラ
- DCC64.EXE、Delphi 64 ビット コマンド ライン コンパイラ
- DCCOSX.EXE、OS X 用の Delphi クロス コンパイラ
たとえば共有ライブラリなど、Delphi モバイル コンパイラが使用できるものを作成するには、アセンブラを見つける必要があります。
それはいけません。
Delphi Mobile の背後にあるエンジンである LLVM には、そのようなアセンブラ言語があります : http://llvm.org/docs/CommandGuide/llvm-as.html CPUに依存しない。
とにかく、Delphi は公式には CPU ネイティブ アセンブル言語も LLVM のようなものもサポートしていません。