06_目标代码
Stack栈区,局部变量 Dynamic data堆区 Text写指令的地方 static data放全局变量
x0
:存放0
的寄存器
- 伪指令:汇编语言中的语法糖
li
:load immediate(伪指令)mv
是伪指令,实现 add t0, t1,zero
减法实现:直接加负数
代码演示
add
1 | li t0, 20 # li: load immediate |
addi
1 | li t0, 20 # li: load immediate |
ecall
- 函数调用传参
a0-a7
寄存器a0,a1
同时还是存放返回值的寄存器
系统调用
1 | # f = (g + h) - (i + j) |
data
没有.text
就默认文件开始。.data
放全局变量,在内存的data区.word
:告诉汇编器,数据占4Byte.half
.string
:后面有\0
.ascii
:后面没有\0
1 | # f = (g + h) - (i + j) |
array
1 | .data |
branch-max
跳转指令
1 | # c = max(a, b) |
array-for
1 | .data |
proc-max
- 函数调用
- 保存返回地址
- 转移控制权
1 | # proc-max.asm |
proc-fact
1 | .text |
sub-add
1 | # f = (g + h) - (i + j) |
- 标题: 06_目标代码
- 作者: Charlie
- 创建于 : 2023-06-01 00:06:00
- 更新于 : 2024-07-05 12:55:04
- 链接: https://chillcharlie357.github.io/posts/94e93df4/
- 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论