- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我的问题实际上比标题更笼统:
在编写最终将编译为 LLVM 中间代码,然后从那里编译为机器语言的代码时,体系结构在什么时候重要?
假设我正在编写 Rust(它使用 LLVM 作为后端)。我是否能够自动将我的 Rust 代码编译到 LLVM 可以定位的每个架构(假设该机器上有一个可以运行它的操作系统)?
或者可能是 Rust 标准库尚未“与 ARM 兼容”,所以即使 LLVM 以它为目标我也无法编译到 ARM?
如果我不使用任何标准库怎么办,我的整个程序只是一个立即返回的程序?难道即使没有任何库,即使 LLVM 以 Rust(或你拥有的)为目标,Rust(或你拥有的)也无法编译成 ARM(或你拥有的)?
如果以上所有示例都可以正常编译,我需要做什么才能让我的代码
在一种架构上中断
而不是编译到特定架构?
同种类加分题:
谢谢。
最佳答案
根据我的理解,您可以编译 到 LLVM 支持的任何目标(这里可能仍然有一些注意事项,前端使用 inline assembler 或 module level inline assembly ),但是,您无法保证它会正确执行。前端负责完成跨作者支持的平台移植的工作。
另请注意,作为前端开发人员,您有责任提供 data layout和 target triple .
另见:
Let's say I'm writing Rust (which uses LLVM as a backend). Am Iautomatically capable of compiling my Rust code to every architecturethat LLVM can target (assuming there's an OS on that machine that canrun it)?
这取决于 Rust 前端的作者。
Or could it be that the Rust standard library hasn't been made "ARMcompatible" yet, so I couldn't compile to ARM even if the LLVM targetsit?
我很确定 LLVM 能够发出指令,但它在寻址方面可能不正确。
我自己没有使用过上面提到的内联汇编工具,但我假设如果它允许特定于平台的汇编,那么这也会破坏与平台无关的编译。
What if I don't use any of the standard library, my entire program isjust a program that returns right away? Could it be the case that evenwithout any libraries, Rust (or what have you) can't compile to ARM(or what have you) even if the LLVM targets it?
这又取决于 Rust 前端发出的内容。甚至在为您的逻辑发出指令之前,它可能会发出一些样板设置逻辑。
我在 LLVM 中编写我自己的语言,它在名为“main”的特殊函数的情况下执行此操作。我的目标是 C ABI,因此它将使用适当的 C 样式 main 包装此 main 并使用一组更严格的参数调用它。
If all the above examples compile just fine, what do I have to do toget my code to break on one architecture not compile to a certainarchitecture?
如 llvm FAQ 中所述,考虑使用 Clang 的 C/C++ . Clang 是 LLVM 的前端,可能是最流行的前端,编写 C/C++ 的用户负责#include-ing 适当的平台特定功能。
某些语言的设计可能更独立于平台,然后前端可以为您处理这些工作。
Let's say the standard library makes use of OS system calls (which issurely does). Do you have to care about architecture when makingsystem calls? Or does the OS (Linux, for example) abstract awayarchitecture as well?
我假设你在谈论前端以 C 标准库为目标的情况,在这种情况下 LLVM 有 standard C library intrinsics可以被前端使用。然而,这不是唯一的方法,因为您可以使用 call instruction如果像 Kaleidoscope example 中那样以 C ABI 为目标,则直接调用 C 函数.
最终,标准库可能是一个可移植性问题,必须由前端开发人员解决。
关于linux - 编写由 LLVM 后端编译的代码时,体系结构重要吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34306069/
我只想从客户端向服务器发送数组 adc_array=[w, x, y, z]。下面是客户端代码,而我的服务器是在只接受 json 的 python 中。编译代码时我没有收到任何错误,但收到 2 条警告
我是 lua 和 Node js 的新手,我正在尝试将我正在开发的移动应用程序连接到服务器。问题是它连接到服务器,但我尝试传递的数据丢失或无法到达服务器。对我正在做的事情有什么问题有什么想法吗? th
我在这个页面上工作 http://www.haskell.org/haskellwiki/99_questions/Solutions/4 我理解每个函数的含义,看到一个函数可以像这样以多种方式定义,
我目前正在尝试将数据写入 excel 以生成报告。我可以将数据写入 csv 文件,但它不会按照我想要的顺序出现在 excel 中。我需要数据在每列的最佳和最差适应性下打印,而不是全部打印在平均值下。这
所以,我正在做一个项目,现在我有一个问题,所以我想得到你的帮助:) 首先,我已经知道如何编写和读取 .txt 文件,但我想要的不仅仅是 x.hasNext()。 我想知道如何像 .ini 那样编写、读
我正在尝试编写一个函数,该函数将返回作为输入给出的任何数字的阶乘。现在,我的代码绝对是一团糟。请帮忙。 function factorialize(num) { for (var i=num, i
这个问题已经有答案了: Check variable equality against a list of values (16 个回答) 已关闭 4 年前。 有没有一种简洁或更好的方法来编写这个条件
我对 VR 完全陌生,正在 AFrame 中为一个类(class)项目开发 VR 太空射击游戏,并且想知道 AFrame 中是否有 TDD 的任何文档/标准。有人能指出我正确的方向吗? 最佳答案 几乎
我正在尝试创建一个 for 循环,它将重现以下功能代码块,但以一种更具吸引力的方式。这是与 Soundcould 小部件 API 实现一起使用的 here on stackoverflow $(doc
我有一个非常令人困惑的问题。我正在尝试更改属性文件中的属性,但它只是没有更改... 这是代码: package config; import java.io.FileNotFoundException
我对 VR 完全陌生,正在 AFrame 中为一个类(class)项目开发 VR 太空射击游戏,并且想知道 AFrame 中是否有 TDD 的任何文档/标准。有人能指出我正确的方向吗? 最佳答案 几乎
我正在开发一个用户模式(Ring3)代码级调试器。它还应支持.NET可执行文件的本机(x86)调试。基本上,我需要执行以下操作: 1).NET在隐身模式下加载某些模块,而没有LOAD_DLL_DEBU
我有一个列表,我知道有些项目是不必要打印的,我正在尝试通过 if 语句来做到这一点...但是它变得非常复杂,所以有没有什么方法可以在 if 语句中包含多个索引而无需打印重写整个声明。 看起来像这样的东
我很好奇以不同方式编写 if 语句是否会影响程序的速度和效率。所以,例如写一个这样的: bool isActive = true; bool isResponding = false; if (isA
我在搜索网站的源代码时找到了一种以另一种方式(我认为)编写 if 语句的方法。 代替: if(a)b; 或: a?b:''; 我读了: !a||b; 第三种方式和前两种方式一样吗?如果是,为什么我们要
我的数据采用以下格式(HashMap的列表) {TeamName=India, Name=Sachin, Score=170} {TeamName=India, Name=Sehwag, Score=
我目前正在完成 More JOIN operations sqlzoo 的教程,遇到了下面的代码作为#12 的答案: SELECT yr,COUNT(title) FROM movie JOIN ca
我正试图找到一种更好的方法来编写这段代码: def down_up(array, player) 7.downto(3).each do |row| 8.times do |col
出于某种原因,我的缓冲区中充满了乱码,我不确定为什么。我什至用十六进制编辑器检查了我的文件,以验证我的字符是否以 2 字节的 unicode 格式保存。我不确定出了什么问题。 [打开文件] fseek
阅读编码恐怖片时,我刚刚又遇到了 FizzBuzz。 原帖在这里:Coding Horror: Why Can't Programmers.. Program? 对于那些不知道的人:FizzBu
我是一名优秀的程序员,十分优秀!