学习目标

  • 编写完整的汇编程序
  • 理解汇编伪指令

8.1 汇编程序结构

.section .text
.global _start

_start:
    li a0, 10       # 加载立即数
    li a1, 20
    add a2, a0, a1  # a2 = a0 + a1

    # 退出
    li a7, 93       # exit 系统调用
    ecall

8.2 伪指令

li   a0, 100        # 加载立即数
la   a0, label      # 加载地址
mv   a0, a1         # 移动(实际是 addi a0, a1, 0)
j    label          # 跳转(实际是 jal x0, label)
ret                 # 返回(实际是 jalr x0, 0(ra))

8.3 函数示例

# int add(int a, int b)
add:
    add a0, a0, a1
    ret

# 调用
main:
    li a0, 10
    li a1, 20
    call add        # 调用函数

实践练习

用汇编实现斐波那契数列。

下一步

第 9 章:汇编与 C 混合编程

更新时间: