主页 > 互联网 > 内容页

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

2023-06-09 19:59:33 来源:嵌入式USB开发

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

本文转自公众号欢迎关注


(资料图)

前言

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

使用网页

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

https://godbolt.org/

使用工具

推荐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.attributearch, "rv64i2p0_m2p0_a2p0_f2p0_d2p0_c2p0".attribute unaligned_access, 0.attribute stack_align, 16.text.align  1.globl  add.type   add, @functionadd:addi    sp,sp,-32sd  s0,24(sp)addi    s0,sp,32mv  a5,a0mv  a4,a1sw  a5,-20(s0)mv  a5,a4sw  a5,-24(s0)lw  a4,-20(s0)lw  a5,-24(s0)addw    a5,a4,a5sext.w  a5,a5mv  a0,a5ld  s0,24(sp)addi    sp,sp,32jr  ra.size   add, .-add.align  1.globl  main.type   main, @functionmain:addi    sp,sp,-32sd  ra,24(sp)sd  s0,16(sp)addi    s0,sp,32sw  zero,-20(s0)li  a5,1sw  a5,-24(s0)li  a5,1sw  a5,-28(s0)lw  a4,-28(s0)lw  a5,-24(s0)mv  a1,a4mv  a0,a5call    addmv  a5,a0sw  a5,-20(s0)li  a5,0mv  a0,a5ld  ra,24(sp)ld  s0,16(sp)addi    sp,sp,32jr  ra.size   main, .-main.ident  "GCC: (GNU) 10.2.0"

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

riscv64-unknown-elf-objdump -s -d main.o > main.o.txtriscv64-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

标签:

上一篇:快来提供有效线索,“找到”这6人有赏!最高赏金50万!
下一篇:最后一页