Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/161.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
原生到中间的C++ 和/或实际上可以编译本地C++到某种中间语言,然后在运行时编译它?< /P> 沿着同一行,是便携的术语,用来表示这一点。< P>编译器基础结构解析C++代码,把它转换成一种中间语言,称为LLVM IR IR,代表中间表示,它看起来像高级汇编语言。它是一种独立于机器的语言。产生IR是一个阶段。在下一个阶段,它将通过称为pass的各种优化器。然后到达第三阶段,第三阶段发出机器代码,即机器相关代码_C++ - Fatal编程技术网

原生到中间的C++ 和/或实际上可以编译本地C++到某种中间语言,然后在运行时编译它?< /P> 沿着同一行,是便携的术语,用来表示这一点。< P>编译器基础结构解析C++代码,把它转换成一种中间语言,称为LLVM IR IR,代表中间表示,它看起来像高级汇编语言。它是一种独立于机器的语言。产生IR是一个阶段。在下一个阶段,它将通过称为pass的各种优化器。然后到达第三阶段,第三阶段发出机器代码,即机器相关代码

原生到中间的C++ 和/或实际上可以编译本地C++到某种中间语言,然后在运行时编译它?< /P> 沿着同一行,是便携的术语,用来表示这一点。< P>编译器基础结构解析C++代码,把它转换成一种中间语言,称为LLVM IR IR,代表中间表示,它看起来像高级汇编语言。它是一种独立于机器的语言。产生IR是一个阶段。在下一个阶段,它将通过称为pass的各种优化器。然后到达第三阶段,第三阶段发出机器代码,即机器相关代码,c++,C++,它是一个基于模块的设计;一相模块的输出变为另一相模块的输入。您可以将IR保存在磁盘上,以便以后可以恢复其余阶段,可能是在完全不同的机器上 所以您可以生成IR,然后在运行时执行其余的操作?我自己也没有做过,但LLVM看起来很有前途 以下是LLVM IR的文档: 在Stackoverlow上似乎很有趣,正如它所说 LLVM的优势: JIT—您可以动态编译和运行代码。 这些文章读得很好: 在drdobs.com上 编译器基础结构解析C++代码,将其转换为LLVM IR语言的中间语言,代表中间表示,它看

它是一个基于模块的设计;一相模块的输出变为另一相模块的输入。您可以将IR保存在磁盘上,以便以后可以恢复其余阶段,可能是在完全不同的机器上

所以您可以生成IR,然后在运行时执行其余的操作?我自己也没有做过,但LLVM看起来很有前途

以下是LLVM IR的文档:

在Stackoverlow上似乎很有趣,正如它所说

LLVM的优势: JIT—您可以动态编译和运行代码。 这些文章读得很好:

在drdobs.com上

编译器基础结构解析C++代码,将其转换为LLVM IR语言的中间语言,代表中间表示,它看起来像高级汇编语言。它是一种独立于机器的语言。产生IR是一个阶段。在下一个阶段,它将通过称为pass的各种优化器。然后到达第三阶段,第三阶段发出机器代码,即机器相关代码

它是一个基于模块的设计;一相模块的输出变为另一相模块的输入。您可以将IR保存在磁盘上,以便以后可以恢复其余阶段,可能是在完全不同的机器上

所以您可以生成IR,然后在运行时执行其余的操作?我自己也没有做过,但LLVM看起来很有前途

以下是LLVM IR的文档:

在Stackoverlow上似乎很有趣,正如它所说

LLVM的优势: JIT—您可以动态编译和运行代码。 这些文章读得很好:

在drdobs.com上


看起来是的。会有一些棘手的问题需要解决,比如模板魔术。为什么要这样做?如果您能够在任何平台上编译代码并运行,而不需要对代码进行任何更改,那么您的代码就是“可移植的”。可移植性不同于将一种语言转换为另一种语言。可移植性是您使用JIT的主要原因吗?如果是这样的话,是什么阻止您简单地进行多个目标构建?听起来像是XY的问题。是的,事实上这很常见。通常,C++被编译为古x86 ISA,然后在运行时将其转换为CPU现在实际使用的任何内部RISC架构。硬连线x86实现在早期的奔腾时代已经不流行了。@MSalters Cool。。我不知道这件事。x86如何编译成x64指令?我在谷歌上找不到这个答案。谢谢你,就像那样。会有一些棘手的问题需要解决,比如模板魔术。为什么要这样做?如果您能够在任何平台上编译代码并运行,而不需要对代码进行任何更改,那么您的代码就是“可移植的”。可移植性不同于将一种语言转换为另一种语言。可移植性是您使用JIT的主要原因吗?如果是这样的话,是什么阻止您简单地进行多个目标构建?听起来像是XY的问题。是的,事实上这很常见。通常,C++被编译为古x86 ISA,然后在运行时将其转换为CPU现在实际使用的任何内部RISC架构。硬连线x86实现在早期的奔腾时代已经不流行了。@MSalters Cool。。我不知道这件事。x86如何编译成x64指令?我在谷歌上找不到这个答案。感谢SBTW,他们计划在Android应用程序中使用LLVM IR,这样一旦从市场下载,应用程序就会编译成设备上的本机代码,这样应用程序创建者就不必为每个受支持的设备构建它。顺便说一句,他们计划在Android应用程序中使用LLVM IR,因此,一旦从市场上下载,应用程序就会编译成设备上的本机代码,这样应用程序创建者就不必为每个受支持的设备构建应用程序。