此为 Mathematica 4 文档,内容基于更早版本的 Wolfram 语言
查看最新文档(版本11.2)

2.5.15 高级专题:处理编译代码

Mathematica 中使用 Compile 产生的编译代码时,不需要知道它的内部形式. 然后内部代码可以用 Mathematica 表达式表示,对其进行操作有时是很有用的. 例如,可以将由 Compile 产生的代码用于外部程序和设备,也可以产生 CompileFunction 目标在 Mathematica 中运行.在这些情况下,需要了解CompileFunction 目标的内部形式. CompileFunction 目标的第一个元素总是模式集合, 它给出该目标变量的类型. CompileFunction 的第5个元素是纯函数, 在无法使用编译代码时应用该函数.

编译代码对象的结构

这里明确地给出了由 Compile 产生编译代码的形式

Out[1]//InputForm=

CompileFunction 目标中的指令流是一系列适用于简单理想化计算机的 指令组成的.该计算机对寄存器进行编号,并在这些寄存器上进行运算. 有5种基本类型的寄存器:逻辑, 整数, 实数, 复数和张量. 每一种基本 类型可以是一个单一的寄存器,也可以是任意的寄存器阵列. 计算一个 CompileFunction 目标所需的每种寄存的数目列表是该对象 的第二个元素.
在编译代码对象中的实际指令是以列表的形式给出的. 第一个元素是整 数 "opcode",它规定进行何种运算,接下来的元素是某一类型的寄存器数目, 或者是文字常数,列表中的最后一个元素是用来存放运算结果 的寄存器的数目.