我正在学习llvm,并希望对我的想法进行概念验证.
基本上,我想分割我的编译器和我的运行时.编译器会给出一个.bc,运行时会通过ParseBitcodeFile加载它并使用ExecutionEngine来运行它.这部分正在运作.
现在,为了轻松地进行系统调用,我希望能够在我的运行时C/C++函数中实现所有系统调用(文件io,stdout打印等).我的问题是,如何从我的玩具编译器中调用这些函数,这些函数由llvm在不同的步骤中编译,并允许在执行时使用它.
我有这种类型,基本上是一个
struct { int x,y,z; }
Run Code Online (Sandbox Code Playgroud)
我想用作stl地图的关键字.由于它是一个自定义类型,我需要实现运算符<为地图做比较魔术.
我很难找到允许它的功能.到目前为止,我已经尝试过:
return X < v.X && Y < v.Y && Z < v.Z;
Run Code Online (Sandbox Code Playgroud)
这根本不起作用,而且
return X*X+Y*Y+Z*Z < v.X*v.X+v.Y*v.Y+v.Z*v.Z;
Run Code Online (Sandbox Code Playgroud)
给出这个形状而不是正方形:

请记住,x,y或z值可能为负值,这会进一步使后面的解决方案无效.
任何人都知道如何实现这样的功能?
我希望我的Vim显示空行###########,如下所示:

喜欢的东西我如何取代我的标签字符来>---用set listchars=tab:>-.只是以那种方式显示它,而不是实际插入它们.
此外,如果它能够适应我的终端尺寸,它会很棒.