全球最实用的IT互联网信息网站!

AI人工智能P2P分享&下载搜索网页发布信息网站地图

当前位置:诺佳网 > 电子/半导体 > 嵌入式技术 >

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

时间:2023-06-09 19:13

人气:

作者:admin

标签: 汇编代码  汇编  代码  RISC-V 

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

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

温馨提示:以上内容整理于网络,仅供参考,如果对您有帮助,留下您的阅读感言吧!
相关阅读
本类排行
相关标签
本类推荐

CPU | 内存 | 硬盘 | 显卡 | 显示器 | 主板 | 电源 | 键鼠 | 网站地图

Copyright © 2025-2035 诺佳网 版权所有 备案号:赣ICP备2025066733号
本站资料均来源互联网收集整理,作品版权归作者所有,如果侵犯了您的版权,请跟我们联系。

关注微信