我在compiler explorer中编写了以下代码片段:
fn foo() -> u8 {
54
}
fn bar() -> u128 {
3423
}
fn main() {
let a: (u8, u128) = (foo(), bar());
println!("foo result: {}", a.0);
println!("bar result: {}", a.1);
}
程序集版本如下:
.text
.file "example.db4da305-cgu.0"
.type __rustc_debug_gdb_scripts_section__,@object
.section .debug_gdb_scripts,"aMS",@progbits,1,unique,1
.weak __rustc_debug_gdb_scripts_section__
__rustc_debug_gdb_scripts_section__:
.asciz "\001gdb_load_rust_pretty_printers.py"
.size __rustc_debug_gdb_scripts_section__, 34
.section .debug_aranges,"",@progbits
.section ".note.GNU-stack","",@progbits
我对汇编不是很熟悉,但我对它的一点了解告诉我,这并不包括任何实现这些函数的asm指令,这只是指令。
我是否以错误的方式使用编译器资源管理器?(检查标志或其他内容)
这是我的代码片段的link。
2条答案
按热度按时间pxyaymoc1#
将
fn main
变更为pub fn main
会输出正确的组件。下面是来自rust示例的注解:
hts6caw32#
默认情况下,你正在编译一个库。由于你的 library 没有任何公共符号,它什么也不做,你的
asm
是空的。解决方案:
main
声明为public:pub fn main()