我正在基于现有的Sparc后端和本教程为RISC机器(名为Risco)开发一个非常基本的新LLVM后端.要注册后端,我使用了以下内容.
在RiscoTargetMachine.cpp:
extern "C" void LLVMInitializeRiscoTarget()
{
// Register the target.
RegisterTargetMachine<RiscoSimulatorTargetMachine> X(TheRiscoTarget);
RegisterAsmInfo<RiscoMCAsmInfo> Y(TheRiscoTarget);
}
Run Code Online (Sandbox Code Playgroud)在Risco.td:
def : Processor<"simulator", NoItineraries, [FeatureA]>;
def Risco : Target {
// Pull in Instruction Info:
let InstructionSet = RiscoInstrInfo;
}
Run Code Online (Sandbox Code Playgroud)在TargetInfo/RiscoTargetInfo.cpp:
Target llvm::TheRiscoTarget;
extern "C" void LLVMInitializeRiscoTargetInfo() {
RegisterTarget<> X(TheRiscoTarget, "risco", "Risco");
}
Run Code Online (Sandbox Code Playgroud)在顶级LLVM配置脚本:
# Added Risco to the TARGETS_TO_BUILD variable at line 4965 (from svn trunk):
all) TARGETS_TO_BUILD="X86 Sparc PowerPC Alpha ARM Mips CellSPU PIC16 XCore MSP430 SystemZ …Run Code Online (Sandbox Code Playgroud)我目前正在编写一个针对Java字节码的玩具编译器.
我想知道在编写.class文件之前是否存在可以在发出的字节码中进行的各种简单窥孔优化的某种目录,可能是摘要.我实际上知道一些具有此功能的库,但我想自己实现它.
我正在关注x86程序集的本教程.到目前为止,每个例子都使用作者称为"c-driver"程序,用汇编模块编译,用于某些"初始化".就像是:
int main(void) {
int ret = asm_main();
return ret;
}
Run Code Online (Sandbox Code Playgroud)
然后使用C调用约定正常编写asm_main函数.我想知道C编译器生成所需的初始化究竟是什么,以及是否可以以可移植的方式完成.
信息:我在Windows XP,32位盒子上,使用NASM汇编器和mingw32-gcc进行链接.