按货币重新定位机器指令(摘要)

重新定位将机器说明调整为说明说明位置的变化或它们所指的外部符号。标准链接器实现有限的重定位集转换,适用于单个架构。这些转换被枚举、命名并刻在机器相关的对象文件格式,链接器必须识别它们通过名字。这些名称及其关联的转换是不必要的机器依赖性的来源。

另一种方法是使用SLED(编码和解码规范语言)指定机器指令的表示。说明由施工人员,表示将操作数列表映射到指令二进制的函数陈述。任何操作数都可以指定为“可重定位”,这意味着操作数的值在指令为编码。根据SLED规范新泽西机器代码工具包可以生成以本机二进制编码指令的函数代表。对于具有可重定位操作数的指令,该工具箱还计算重新定位转换。工具编写器可以创建机器相关性使用这些转换重新定位机器指令的软件。例如,mld(百万美元),使用该工具箱构建的可重定向链接器,迁移只需要20行C代码,而且代码是机器依赖的。

工具箱通过currying编码发现重定位转换功能。试图用可重定位操作数导致创建闭包。这个当可重定位的值操作数变得已知。Currying提供了一种通用的、与机器相关的方法重新安置。

Currying重写了λ-两个嵌套项λ-条款。标准实现具有第一λ分配闭包并将其操作数存储在其中指向第二个的指针λ.使用此工具包中的战略意味着,当它构建一个应用程序时,工具箱会为许多不同的内部的λ-术语——每个使用可重定位地址。吊装一些秒中的计算λ进入第一个在第二场比赛中取得了很多成绩λ一模一样——一把就够了对于整个指令集。这种优化减少了机器相关装配的尺寸Alpha、MIPS、SPARC和PowerPC的链接代码增加了15-25%奔腾大约40%。它也使第二个λs相当于重新定位以标准对象文件格式命名的转换。

全文可在PostScript(后置脚本)形式。这篇论文包含了太多的数学知识,无法使HTML转换有用。