Jiaolong's Blog Jiaolong's Blog
首页
分类
归档
Wiki
摘录
导航
留言
关于

Jiaolong

Solo Developer
首页
分类
归档
Wiki
摘录
导航
留言
关于
  • 在 Ubuntu 20.04 上安装 GCC
  • hello world
  • 使用cva6+spike搭建RISC-V环境
  • gcc编译过程查看汇编代码
  • 分析RISC-V汇编代码
  • RISC-V V扩展1.0版本环境搭建与测试
  • RISCV-V扩展执行速度测试
  • 移植FFmpeg到RISC-V记录
  • Linux创建Swap交换分区
  • RISC-V \\V\\ Vector Extension 1.0 翻译
  • RISCV-V拓展1.0解读
  • 浅谈向量化和SIMD
  • x264编译测试
  • 浅淡Makefile
  • 回炉重造C语言
  • 使用Gprof+Gprod2dot做性能分析
  • 移植x264到RISC-V
  • QEMU运行RVV
  • 优化x264
  • 音视频理论基础
  • Swift拼音排序
  • Blog
Jiaolong
2022-08-04

分析RISC-V汇编代码

#include <stdio.h>
int g(int x){
	return x+3;
}

int f(int x){
	return g(x); 
}

int main(){
    return f(8)+1;
}
1
2
3
4
5
6
7
8
9
10
11
12
1
2
3
4
5
6
7
8
9
10
11
12

编译后:

        .file   "add.c"
        .option nopic
        .attribute arch, "rv64i2p0_m2p0_a2p0_f2p0_d2p0_c2p0"
        .attribute unaligned_access, 0
        .attribute stack_align, 16
        .text
        .align  1
        .globl  g
        .type   g, @function
g:
        addi    sp,sp,-32
        sd      s0,24(sp)
        addi    s0,sp,32
        mv      a5,a0
        sw      a5,-20(s0)
        lw      a5,-20(s0)
        addiw   a5,a5,3
        sext.w  a5,a5
        mv      a0,a5
        ld      s0,24(sp)
        addi    sp,sp,32
        jr      ra
        .size   g, .-g
        .align  1
        .globl  f
        .type   f, @function
f:
        addi    sp,sp,-32
        sd      ra,24(sp)
        sd      s0,16(sp)
        addi    s0,sp,32
        mv      a5,a0
        sw      a5,-20(s0)
        lw      a5,-20(s0)
        mv      a0,a5
        call    g
        mv      a5,a0
        mv      a0,a5
        ld      ra,24(sp)
        ld      s0,16(sp)
        addi    sp,sp,32
        jr      ra
        .size   f, .-f
        .align  1
        .globl  main
        .type   main, @function
main:
        addi    sp,sp,-16
        sd      ra,8(sp)
        sd      s0,0(sp)
        addi    s0,sp,16
        li      a0,8
        call    f
        mv      a5,a0
        addiw   a5,a5,1
        sext.w  a5,a5
        mv      a0,a5
        ld      ra,8(sp)
        ld      s0,0(sp)
        addi    sp,sp,16
        jr      ra
        .size   main, .-main
        .ident  "GCC: (SiFive GCC 8.3.0-2020.04.0) 8.3.0"
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
Last updated: 2022/12/04, 13:58:10

← gcc编译过程查看汇编代码 RISC-V V扩展1.0版本环境搭建与测试→

Copyright © 2022-2023 | Jiaolong Wang
  • 跟随系统
  • 浅色模式
  • 深色模式