4

如何以及在何处使用 Android 在 Embarcadero Delphi XE5 中编写 ARM 汇编代码?如果我可以内联写,那将是最好的。

4

4 回答 4

7

Delphi 移动编译器不支持这些asm ... end块。

但是“旧的好方法”仍然可用,因为我们正在谈论本编译器。

您可以使用外部汇编程序(例如 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';

看看这篇日语文章- 谷歌翻译是你的朋友!

于 2013-11-12T09:13:52.573 回答
2

这不可能。

Use Atomic Instrinsics Instead of Assembly Language.

引用:

Delphi 移动编译器不支持内置汇编器。

于 2013-11-12T08:48:48.270 回答
1

你不能。

LLVM - 这是 Delphi Mobile 背后的引擎 - 有一种汇编语言: http: //llvm.org/docs/CommandGuide/llvm-as.html 但它几乎不会是 ARM 类型或 x86 类型,因为 LLVM 试图与 CPU 无关。

无论如何,Delphi 官方既不支持 CPU-native 汇编语言也不支持 LLVM 之类的。

于 2013-11-12T08:47:27.707 回答
1

Delphi 移动编译器不支持内联汇编。文档清楚地说明了这一点:

内联汇编器可用于:

  • DCC32.EXE,Delphi 命令行编译器
  • DCC64.EXE,Delphi 64 位命令行编译器
  • DCCOSX.EXE,用于 OS X 的 Delphi 交叉编译器

您需要找到一个汇编器来创建 Delphi 移动编译器可以使用的东西,例如共享库。

于 2013-11-12T08:47:22.200 回答