005 【操作系统】汇编语言伪指令大全

伪指令前通常加一个 . 来区分它们与普通的机器指令。
. 主要起到区分伪指令和机器指令的作用。伪指令不会生成机器码,而是告诉汇编器如何组织和布局程序,而机器指令是直接由 CPU 执行的。

.text 和 .data 放在一起,表示不区分代码段、数据段

. 开头的伪指令是汇编器(Assembler)提供的 汇编器指令(Assembler Directives),用于控制汇编过程、定义数据、布局内存等。以下是常见的 RISC-V 汇编器指令及其作用的分类表格:


1. 数据定义伪指令

伪指令格式作用
.data.data切换到数据段,后续定义的数据将存储在数据段中。
.rodata.rodata切换到只读数据段,后续定义的数据将存储在只读数据段中。
.bss.bss切换到未初始化数据段(BSS 段),后续定义的数据将存储在 BSS 段中。
.byte.byte value1, value2, ...定义一个或多个字节数据。
.half.half value1, value2, ...定义一个或多个半字(2 字节)数据。
.word.word value1, value2, ...定义一个或多个字(4 字节)数据。
.dword.dword value1, value2, ...定义一个或多个双字(8 字节)数据。
.asciz.asciz "string"定义一个以空字符(\0)结尾的字符串。
.string.string "string"定义一个字符串(与 .asciz 类似)。
.space.space size分配指定大小的未初始化空间(以字节为单位)。

2. 内存布局伪指令

伪指令格式作用
.org.org address设置当前段的位置计数器为指定地址。
.align.align n将当前位置对齐到 2^n 的边界。
.skip.skip size跳过指定大小的字节(与 .space 类似)。

3. 符号定义伪指令

伪指令格式作用
.globl.globl symbol声明一个全局符号,使其对其他文件可见。
.local.local symbol声明一个局部符号,使其仅在当前文件中可见。
.weak.weak symbol声明一个弱符号,如果未定义则不会报错。
.equ.equ name, value定义一个符号常量。
.set.set name, value定义一个符号常量(与 .equ 类似)。

4. 段控制伪指令

伪指令格式作用
.text.text切换到代码段,后续定义的指令将存储在代码段中。
.section.section name切换到指定名称的段。
.previous.previous切换回上一个段。

5. 条件伪指令

伪指令格式作用
.if.if condition如果条件为真,则汇编后续代码。
.else.else.if 配合使用,表示条件为假时的代码块。
.endif.endif结束条件汇编块。
.ifdef.ifdef symbol如果符号已定义,则汇编后续代码。
.ifndef.ifndef symbol如果符号未定义,则汇编后续代码。

6. 程序入口与结束伪指令

伪指令格式作用
.entry.entry定义程序入口点(通常由链接器使用)。
.end.end标记汇编文件的结束。

7. 其他伪指令

伪指令格式作用
.include.include "filename"包含另一个汇编文件。
.macro.macro name arg1, arg2, ...定义一个宏。
.endm.endm结束宏定义。
.rept.rept count重复汇编代码块指定次数。
.endr.endr结束重复块。

示例代码

.data                    # 切换到数据段
    my_var: .word 42     # 定义一个 32 位整数
    msg: .asciz "Hello"  # 定义一个字符串

.text                    # 切换到代码段
.globl main              # 声明 main 为全局符号
main:
    la a0, msg           # 加载 msg 的地址到 a0
    li a7, 4             # 设置系统调用号为 4(打印字符串)
    ecall                # 触发系统调用
    li a7, 10            # 设置系统调用号为 10(退出程序)
    ecall                # 触发系统调用
.end                    # 结束汇编文件
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

_小猪沉塘

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值