小编Giu*_*ela的帖子

如何注册新的LLVM后端?

我正在基于现有的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)
  • 在Tar​​getInfo/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)

build-process backend llvm

14
推荐指数
1
解决办法
2695
查看次数

编译器优化:Java字节码

我目前正在编写一个针对Java字节码的玩具编译器.

我想知道在编写.class文件之前是否存在可以在发出的字节码中进行的各种简单窥孔优化的某种目录,可能是摘要.我实际上知道一些具有此功能的库,但我想自己实现它.

java compiler-construction optimization bytecode

13
推荐指数
1
解决办法
7128
查看次数

x86大会:主要的序幕和结语是什么?

我正在关注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进行链接.

c x86 assembly nasm

0
推荐指数
1
解决办法
2531
查看次数