0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

RISC-V查看汇编代码的几种方式

嵌入式USB开发 来源:嵌入式USB开发 作者:嵌入式USB开发 2023-06-09 19:13 次阅读

RISC-V查看汇编代码的几种方式 (qq.com)

本文转自公众号欢迎关注

前言

很多时候需要对照C和汇编进行分析和调试,所以需要查阅汇编代码,以下分享几种方式。

使用网页

可以进入如下网站输入C查看对应的汇编,右侧可以选择编译器版本

https://godbolt.org/

image.png

使用工具

推荐ripes项目

参考https://mp.weixin.qq.com/s/tcG7yCYMsDzUIQmwL-e6BQ

使用GCC

可以用GCC生成汇编代码,或者从目标文件,可执行文件中dump出汇编指令

比如有源码main.c

int add(int a,int b)

{

return a+b;

}

int main(void)

{

int a=0;

int b=1;

int c=1;

a=add(b,c);

return 0;

}

编译生成汇编

riscv64-unknown-elf-gcc -S -o mian.s main.c

main.s如下

.file   "main.c"

.option nopic

.attribute arch, "rv64i2p0_m2p0_a2p0_f2p0_d2p0_c2p0"

.attribute unaligned_access, 0

.attribute stack_align, 16

.text

.align  1

.globl  add

.type   add, @function

add:

addi    sp,sp,-32

sd  s0,24(sp)

addi    s0,sp,32

mv  a5,a0

mv  a4,a1

sw  a5,-20(s0)

mv  a5,a4

sw  a5,-24(s0)

lw  a4,-20(s0)

lw  a5,-24(s0)

addw    a5,a4,a5

sext.w  a5,a5

mv  a0,a5

ld  s0,24(sp)

addi    sp,sp,32

jr  ra

.size   add, .-add

.align  1

.globl  main

.type   main, @function

main:

addi    sp,sp,-32

sd  ra,24(sp)

sd  s0,16(sp)

addi    s0,sp,32

sw  zero,-20(s0)

li  a5,1

sw  a5,-24(s0)

li  a5,1

sw  a5,-28(s0)

lw  a4,-28(s0)

lw  a5,-24(s0)

mv  a1,a4

mv  a0,a5

call    add

mv  a5,a0

sw  a5,-20(s0)

li  a5,0

mv  a0,a5

ld  ra,24(sp)

ld  s0,16(sp)

addi    sp,sp,32

jr  ra

.size   main, .-main

.ident  "GCC: (GNU) 10.2.0"

目标文件或者可执行文件导出汇编

riscv64-unknown-elf-objdump -s -d main.o > main.o.txt

riscv64-unknown-elf-objdump -s -d main > main.txt

 

main:     file format elf64-littleriscv

 

Contents of section .text:

 100b0 93070000 91c71705 00001305 052f05a6  ............./..

 100c0 82809721 00009381 e1be1385 01f61386  ...!............

 100d0 81f9098e 8145ef00 40161705 00001305  .....E..@.......

 100e0 453019c5 17050000 1305252c ef00202f  E0........%,.. /

 100f0 ef00000e 02452c00 0146ef00 e00755a8  .....E,..F....U.
......

使用GDB

如果使用了GDB进行仿真,可以直接进行汇编级别调试

使用如下指令进入C和汇编对照布局

layout split

image.png

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 汇编
    +关注

    关注

    2

    文章

    214

    浏览量

    25912
  • 代码
    +关注

    关注

    30

    文章

    4762

    浏览量

    68408
  • 汇编代码
    +关注

    关注

    0

    文章

    23

    浏览量

    7541
  • RISC-V
    +关注

    关注

    44

    文章

    2237

    浏览量

    46074
收藏 人收藏

    评论

    相关推荐

    【RT-Thread学习笔记】RISC-V汇编基础三大块知识

    【RT-Thread学习笔记】RISC-V汇编基础的三大块知识
    的头像 发表于 07-30 11:01 2721次阅读
    【RT-Thread学习笔记】<b class='flag-5'>RISC-V</b><b class='flag-5'>汇编</b>基础三大块知识

    RISC-V开放架构设计之道|阅读体验】 RISC-V设计必备之案头小册

    ,最基础的RV32已经是完全不变化。以此来规避在过去指令集设计中的错误。 然后开始了在RISC-V中应该如何编写汇编代码,书中大致讲了将c语言编译成计算机执行的机器语言程序的重要步骤,并对每个步骤进行了简单的描述
    发表于 01-22 16:24

    RISC-V 汇编在线仿真器 Ripes OnLine 使用说明

    Ripes OnLine RISC-V 模拟器网址 RISC-V 旨在简化。在线 Ripes 模拟器可让您运行汇编代码,而无需在计算机上进行任何安装。 Ripes.me 网页 转到网页
    发表于 06-28 14:59

    RISC-V汇编语言

    一、导言 从 C 程序翻译成为可以在计算机上执行的机器语言程序的四个经典步骤。这一章的内容包括了后三个步骤,不过我们要从汇编语言在 RISC-V 函数调用规范中的作用开始说起。 上图从C源代码翻译
    发表于 08-19 18:07

    关于RISC-V学习路线图推荐

    开发板,如Arduino、Raspberry Pi等,并了解其硬件配置和特性。 安装开发工具链 : 如GCC编译器、RISC-V汇编器和链接器等,用于编写、编译和调试RISC-V程序。 搭建开发环境
    发表于 11-30 15:21

    一文看懂RISC-V代码密度

    本帖最后由 jf_11671167 于 2021-10-9 10:35 编辑 关键词:RISC-V处理器 ,平头哥玄铁CPU,RISC-V指令集,IoT芯片,RISC-V指令集,代码
    发表于 09-01 14:29

    RISC-V汇编指令编码格式是怎样的

    汇编语言有哪几类指令组成呢?RISC-V汇编指令编码格式是怎样的?有哪几种格式?
    发表于 02-11 08:10

    RISC-V汇编语言开发起来难度大

    RISC-V汇编语言执行效率高吗?开发人员一般在什么场景下需要使用RISC-V汇编语言编程?
    发表于 03-27 14:14

    RISC-V 发展

    汇编当中,都使用ABI名称来代表这些寄存器。RISC-V CSR寄存器CSR是控制状态寄存器,RISC-V中CSR寄存器,需要使用csrr、csrw、csrrw等特定指令进行访问。RISC-V
    发表于 04-14 10:18

    risc-v中国峰会直播:如何优化RISC-V指令集架构的代码密度?

    第一届中国峰会在上海举办,以下是小编整理的部分risc-v峰会的内容。主要介绍了影响代码密度的因素以及如何优化RISC-V指令集架构的代码密度?感兴趣的小伙伴可以详细了解一下。
    的头像 发表于 06-23 12:12 3098次阅读
    <b class='flag-5'>risc-v</b>中国峰会直播:如何优化<b class='flag-5'>RISC-V</b>指令集架构的<b class='flag-5'>代码</b>密度?

    第一届RISC-V中国峰会看点 risc-v开发要怎么优化risc-v指令集架构代码密度

    在第一届RISC-V中国峰会上看点很多,RISC-V是开源的,那么代码密度要怎么控制,会不会因为开源而导致代码密度特别大? 我们一起来看看risc-
    发表于 06-23 18:22 9657次阅读
    第一届<b class='flag-5'>RISC-V</b>中国峰会看点 <b class='flag-5'>risc-v</b>开发要怎么优化<b class='flag-5'>risc-v</b>指令集架构<b class='flag-5'>代码</b>密度

    RISC-V嵌入式开发入门篇2:RISC-V汇编语言程序设计(下)

    本文将介绍如何直接使用RISC-V架构的汇编语言进行程序设计。
    发表于 11-02 18:50 40次下载
    <b class='flag-5'>RISC-V</b>嵌入式开发入门篇2:<b class='flag-5'>RISC-V</b><b class='flag-5'>汇编</b>语言程序设计(下)

    RISC-V嵌入式开发入门篇2:RISC-V汇编语言程序设计(中)

    本文将介绍如何直接使用RISC-V架构的汇编语言进行程序设计。
    发表于 11-03 09:51 42次下载
    <b class='flag-5'>RISC-V</b>嵌入式开发入门篇2:<b class='flag-5'>RISC-V</b><b class='flag-5'>汇编</b>语言程序设计(中)

    RISC-V汇编简介

    RISC-V汇编简介汇编语言有3类指令组成:a.汇编指令:机器码的助记符,有对应的机器码,可以翻译成对应的二进制机器码。b.伪指令:没有对应的机器码,由
    发表于 12-08 18:21 9次下载
    <b class='flag-5'>RISC-V</b><b class='flag-5'>汇编</b>简介

    RISC-VRISC-V AI的未来(特邀讲座)

    主题演讲:RISC-VRISC-V AI的未来(特邀讲座)ppt分享
    发表于 07-14 17:15 16次下载