gpt4 book ai didi

rust - Write::write_fmt 在裸机上不能正常工作

转载 作者:行者123 更新时间:2023-12-03 11:24:00 25 4
gpt4 key购买 nike

在 x86_64 架构上,write!宏按预期使用字符串参数工作,但不适用于整数。当使用整数参数时,我得到一个奇怪的循环(例如 write!(writer, "Hello {}!", 123) 产生无限的“Hello Hello Hello...”)。在 aarch64 上,write!宏根本不起作用。

我使用以下命令构建 libcore:

rustc -C opt-level=3 -Z no-landing-pads -C no-stack-check \
--crate-type rlib --target {arch}-unknown-linux-gnu lib.rs

哪里 {arch}分别是 x86_64aarch64 .

我的代码是使用相同的代码生成选项构建的。 libcore 版本对应于我的编译器。有问题的代码是 here .你能提出问题的可能原因吗?

重要更新:

Here是更精炼的代码。 libcore 是在项目中构建的,所以一切都在控制之中。上面的循环来自机器重新启动。该代码在 aarch64 上完美运行,但在 x86_64 上的 Write::write_fmt 中奇怪地崩溃。仔细检查了我的启动程序集 - 那里似乎没有错误。

最佳答案

write!(writer, "format {}", "1").unwrap();
我认为这不会帮助您解决问题,但是当我遇到类似问题时 write!只会打印 str 参数。如果您能找到将 i32 转换为 str 的 #![no_std] 函数,那么这可能会帮助您完成您要执行的操作。

关于rust - Write::write_fmt 在裸机上不能正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30639543/

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