相关疑难解决方法(0)

许多 Rust 编译器目标定义在数据布局中使用“p270:32:32-p271:32:32-p272:64:64”——这是什么意思?

前几天,对 Rust 编译器的数据布局字符串,或者更具体地说,底层 LLVM 的数据布局字符串的基本了解,已经在Stack Overflow上基本解决了。不幸的是,有一件事仍不清楚。

许多 Rust 编译器目标都包含p270:32:32-p271:32:32-p272:64:64在其数据布局字符串中。示例有i686-unknown-uefix86_64-uwp_windows-msvcx86_64-unknown-uefix86_64-unknown-linux_gnux86_64-fuchsia86_64-apple-darwin

这些目标可以在这里找到https://github.com/rust-lang/rust/tree/1.52.1/compiler/rustc_target/src/spec。

LLVM语言参考解释道:

p[n]:<size>:<abi>:<pref>:<idx> 这指定了指针的大小及其地址空间 n 的错误对齐方式。第四个参数是用于地址计算的索引的大小。如果未指定,则默认索引大小等于指针大小。所有大小均以位为单位。地址空间 n 是可选的,如果未指定,则表示默认地址空间 0。n 的值必须在 [1,2^23) 范围内。

我不明白这一点。p270有什么特别之处p272?他们指的是哪个“地址空间”?

llvm rust

5
推荐指数
1
解决办法
403
查看次数

如何将 Rust 代码编译为裸机 32 位 x86 (i686) 代码?我应该使用什么编译目标?

我想使用 Cargo/Rust 编译 x86 的裸机 32 位代码(在 32 位模式下又称为 i686 或 x86_64)。我需要什么目标?在官方支持的目标列表中我找不到任何实用的东西。

rust

4
推荐指数
1
解决办法
3491
查看次数

标签 统计

rust ×2

llvm ×1