有空就更。
一、基础核心概念:什么是汇编语言?
汇编语言是直接对应 CPU 指令的低级编程语言,每一行汇编代码基本对应一条 CPU 能直接执行的指令。相比 C 语言等高级语言,汇编更贴近硬件,能直接操作 CPU 的寄存器、内存和硬件设备。
RISC-V 是一种开源的精简指令集架构(类似 ARM、x86),NA900 是基于 RISC-V 架构的处理器,我们的教学将围绕 RISC-V 的基础指令展开。
二、核心中的核心:RISC-V 寄存器
CPU 处理数据时,不会直接从内存中反复读写(太慢),而是先把数据放到寄存器(CPU 内部的高速存储单元)中操作。RISC-V 有 32 个通用寄存器(32 位),我们先掌握最常用的几个:
常用寄存器及用途
x0 别名 zero 恒为 0,用于清零或占位
x1 别名 ra 存放函数返回地址(暂不用)
x5-x7 别名 t0-t2 临时寄存器,用于临时数据存储
x19-x27 别名 s1-s9 保存寄存器,用于长期保存数据(需手动保护)
x28 别名 sp 栈指针寄存器,指向当前栈顶
x10-x17 别名 a0-a7 函数参数 / 返回值寄存器,a6-a7常用作系统调用参数
为什么需要区分寄存器?
不同寄存器有约定的用途(类似 “分工”),比如sp专门管栈,a0-a7专门传参数,遵循这个约定能让代码更规范,避免混乱。
练习题 1:寄存器识别
以下哪个寄存器是 “栈指针寄存器”?( )
A. t0 B. sp C. a7 D. s1
若需要临时存储一个中间结果,优先使用哪个寄存器?( )
A. zero B. s1 C. t0 D. a6
答案详解
选 B。sp(x28)是栈指针寄存器,专门指向栈顶位置。
选 C。t0-t2是临时寄存器,适合存储中间结果;s1是保存寄存器,通常用于长期数据,zero恒为 0,a6用于传参,都不适合临时存储。