gpt4 book ai didi

embedded - 我如何编写将全局变量/静态变量放在填充的 BSS 段中的 Rust 代码?

转载 作者:行者123 更新时间:2023-11-29 08:09:41 25 4
gpt4 key购买 nike

我正在尝试使用 Rust 对裸机嵌入式系统进行编程。 C 启动代码中通常要做的事情之一是对任何全局或静态未初始化变量的 BSS 段进行零初始化。

但是,在 Rust 中,我不知道如何创建任何全局或静态未初始化变量(即使使用 unsafe 代码)。换句话说,我不知道如何编写任何 Rust 代码以便编译器用某些东西填充 BSS 段。

我试过...

static BSS_Data: i32 = unsafe { core::mem::uninitialized() };

....但编译器拒绝了它。

有没有什么方法可以编写 Rust 代码(不安全 或其他方式)来生成填充的 BSS 段?在任何完全用 Rust 编写的程序中,BSS 段是否保证始终为空?

最佳答案

static mut XYZ: [u8; 0xabc123] = [0; 0xabc123];

fn main() {
unsafe { println!("{}", XYZ[1000]); }
}
$ rustc bss.rs 
$ readelf -SW bss | grep bss
[21] .tbss NOBITS 000000000004b178 04a178 000028 00 WAT 0 0 8
[28] .bss NOBITS 000000000004e038 04d038 abc220 00 WA 0 0 8
$ ./bss
0

关于embedded - 我如何编写将全局变量/静态变量放在填充的 BSS 段中的 Rust 代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40465933/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com