打印
[RISC-V MCU 应用开发]

RISC-V 汇编语言的基本格式

[复制链接]
219|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
  一个完整的RISC-V汇编程序有多条语句(statement)组成,汇编文件一般由.s结尾(不包含预处理语句,是纯粹的汇编语句)。一条典型的RISC-V汇编语句由3部分组成,分为标签、操作和注释:

[label:] [operation] [comment] 

1
label(标号): GNU汇编中,任何以冒号结尾的标识符都被认为是一个标号。标号相当于给一个指令所在的地址起的一个名字。
operation 可以有以下多种类型:
instruction(指令): 直接对应二进制机器指令的字符串,例如add。
pseudo-instruction(伪指令): 一些指令的组合。它并不对应二进制机器指令,只是为了提高编写代码的效率,可以用一条伪指令指示汇编器产生多条实际的指令(instructions),方便程序的使用,例如li。在理解和做法上与自定义的函数类似。
directive(指示/伪操作): 通过类似指令的形式(以“.”开头),通知汇编器如何控制代码的产生等,不对应具体的RISC-V指令,由汇编器自身定义,例如.text、.global、.end、.macro、.endm等。在理解和应用上类似C语言中的#define语句。
macro(宏):采用指示/伪操作 .macro/.endm 自定义的宏,汇编器碰到宏时会自动将宏替换成对应定义的内容。
comment(注释): 常用方式,#开始到当前行结束,也有些汇编器定义;或//开头的注释格式。
  下面是一个简单的RISC-V的汇编语言程序:

# fitst RISC-V Assemble Sample

.macro do_nothing
    nop
    nop
.endm

    .text
    .global _start

_start:
    li x6, 5 # x6 = 5
    li x7, 4 # x7 = 4

    add x5, x6, x7 # x5 = x6 + x7
    do_nothing

stop:
    j stop  # jump to stop
    .end



使用特权

评论回复

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

163

主题

1336

帖子

0

粉丝