4

Android を搭載した Embarcadero Delphi XE5 で ARM アセンブリ コードを記述する方法と場所を教えてください。インラインで書けるならそれが一番です。

4

4 に答える 4

7

asm ... endDelphi モバイル コンパイラはブロックをサポートしていません。

しかし、ネイティブコンパイラについて話しているので、「昔ながらの良い方法」がまだ利用可能です。

できることは、独自のモジュールを外部アセンブラー(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 翻訳はあなたの友達です!

于 2013-11-12T09:13:52.573 に答える
2

それは不可能。

Use Atomic Instrinsics Instead of Assembly Language.

見積もり:

Delphi モバイル コンパイラは、組み込みのアセンブラをサポートしていません。

于 2013-11-12T08:48:48.270 に答える
1

Delphi モバイル コンパイラは、インライン アセンブラをサポートしていません。ドキュメントはこれを明確にしています:

インライン アセンブラは、次の場所で利用できます。

  • DCC32.EXE、Delphi コマンド ライン コンパイラ
  • DCC64.EXE、Delphi 64 ビット コマンド ライン コンパイラ
  • DCCOSX.EXE、OS X 用の Delphi クロス コンパイラ

たとえば共有ライブラリなど、Delphi モバイル コンパイラが使用できるものを作成するには、アセンブラを見つける必要があります。

于 2013-11-12T08:47:22.200 に答える
1

それはいけません。

Delphi Mobile の背後にあるエンジンである LLVM には、そのようなアセンブラ言語があります : http://llvm.org/docs/CommandGuide/llvm-as.html CPUに依存しない。

とにかく、Delphi は公式には CPU ネイティブ アセンブル言語も LLVM のようなものもサポートしていません。

于 2013-11-12T08:47:27.707 に答える