首页 > 编程语言 >在rust语言中使用Cargo命令输出汇编文档

在rust语言中使用Cargo命令输出汇编文档

时间:2022-12-20 14:57:36浏览次数:67  
标签:Cargo cargo -- rustc 文档 rust release 汇编 asm

首先来一波效果展示:(这是我使用方法二输出的文档,使用vscode工具查看的结果)

 

正文如下: 

一、您可以使用Cargo的cargo rustc命令直接向rustc发送参数:

方法一:

1 cargo rustc -- --emit asm
2 ls target/debug/deps/<crate_name>-<hash>.s

对于优化的装配:

1 cargo rustc --release -- --emit asm
2 ls target/release/deps/<crate_name>-<hash>.s

如果您看到多个<crate_name>-<hash>-<hash>.rcgu.s档案,而不是一个<crate_name>-<hash>.s档案,请设定环境变量CARGO_INCREMENTAL=0来停用累加编译。

二、可以使用RUSTFLAGS环境变量和标准的cargo命令:

方法二:

1 RUSTFLAGS="--emit asm" cargo build
2 cat target/debug/deps/project_name-hash.s

或者在发布模式下(经过优化):

1 RUSTFLAGS="--emit asm" cargo build --release
2 cat target/release/deps/project_name-hash.s

您可以将不同的值传递给--emit参数,* 包括 *(但不限于):

  • mir( rust 中间表现法)
  • llvm-ir(LLVM中间表示法)
  • llvm-bc(LLVM字节码)
  • asm(组件)

三、现有的两个答案(使用cargo rustcRUSTFLAGS)都是使用标准工具获得汇编的最佳方法。如果您发现自己经常尝试查看汇编,您可能需要考虑使用the cargo asm subcommand。在使用cargo install cargo-asm安装它之后,您可以打印如下汇编:

方法三:

1 cargo build --release
2 cargo asm my_crate::my_function

不过,有几件事需要注意:

  • 不确定函数的路径吗?只要运行cargo asm,它就会列出所有可以检查的符号。
  • 在尝试查看程序集之前,您必须先查看cargo build --release,因为cargo asm(显然)只查看已经存在的构建构件
  • 你要检查的函数的代码必须是实际生成的。对于泛型函数来说,这意味着该函数必须用一个具体的类型进行示例化/单态化。如果你的机箱中没有这样的情况,你可以在顶层添加一个伪函数,它可以完成你想要检查的汇编的所有事情。

四、如果您只想查看汇编输出而不是保存它,例如判断它是否经过了良好的优化,那么一个简单的选项是用途:

方法四:https://rust.godbolt.org/

(don'不要忘记将-O添加到编译器选项框中)

 

总结 https://www.saoniuhuo.com/question/detail-2199731.html 链接中的回复。

标签:Cargo,cargo,--,rustc,文档,rust,release,汇编,asm
From: https://www.cnblogs.com/woju/p/16994161.html

相关文章

  • Selenium2.0中文在线文档项目,求翻译达人
    前一阵子在学习selenium2.0,发现网上很多资料都是selenium1.0的且部分信息不准确,无奈只能去官方看英文文档。费劲巴拉的看完了后,就有想法把selenium2.0的文档进行中文翻译,并......
  • 通过读取ts注释,生成组件文档系统
    这篇是对我之前写的【从0到1开发一个自己的ui库】的一个补充,之前只写了自定义开发一个ui库,现在对自己开发的ui库进行ts注释解析,然后生成一个文档说明。先呈现这个文档系统......
  • 字符和文档识别的四十年研究
    Received15February2008Receivedinrevisedform10March2008Accepted11March2008摘要:本文简要介绍在过去的40年中字符和文档识别领域的技术进步,对于每十年中的代表进......
  • 【校招VIP】线上实习 推推 书籍详情模块 Java开发文档周最佳
    【推推】主要是为校招设计的小说一更新就通知的项目,每个模块都具有亮点和难点,项目表现为手机网站应用,可嵌入小程序或APP中。恭喜来自四川师范大学的o0hana同学获得本......
  • 接口文档解决方案之Torna
    ◆一、开源项目简介接口文档解决方案,目标是让接口文档管理变得更加方便、快捷。Torna采用团队协作的方式管理和维护接口文档,将不同形式的文档纳入进来统一维护。Torna弥......
  • AD中添加原理图文档模板-转载
    (24条消息)AD中添加原理图文档模板_shuguang552的博客-CSDN博客_ad原理图模板 ......
  • Uric自动化运维平台文档
    Uric组件2022文档预备知识点:Python基础Mysql前端DjangoDRF组件+VUE3一前端项目初始化1.1客户端项目创建我们使用的vue-cli脚手架作为我们前端开发使用的框架,下......
  • 使用 Github Pages 发布你的项目文档
    你可能比较熟悉如何用GithubPages来分享你的工作,又或许你看过一堂教你建立你的第一个GithubPages网站的教程。近期GithubPages的改进使得从不同的数据源来发布您的......
  • 这个全新的 “万能文库”下载器,竟然可以下载VIP文档!
    其实,不管是学生党,还是工作党,应该或多或少,都有过在“百度”、“道客”、“豆丁”等文库上面,下载某些材料或模板。当然,以前群里面总有一些人会问:“谁能够帮我在百度文库上面,......
  • Rust编程语言学习
    前言rust尝鲜https://www.rust-lang.org编程语言学习在bilibili搜索编程语言本地文档rustupdocquickstart创建文件➜rust-helloworldtouchmain.rs代码内......