这是描述信息

ble bt wifi乐鑫c6模组乐鑫芯片esp8266代理商汇编语言功能

ble bt wifi乐鑫c6模组乐鑫芯片esp8266代理商汇编语言功能

ble bt wifi乐鑫c6模组乐鑫芯片esp8266代理商汇编语言功能

ble bt wifi乐鑫c6模组乐鑫芯片esp8266代理商汇编语言功能

ble

ble bt wifi乐鑫c6模组乐鑫芯片esp8266代理商汇编语言功能,汇编语言(Assemble Language)是能够翻译成二进制机器码的符号语言。现今,很少有人使用汇编语言开发应用程序。但是,在开发一些特殊的程序(如设备驱动、系统引导程序等)时,汇编语言仍然是不可或缺的角色。ble bt wifi乐鑫c6模组乐鑫芯片esp8266代理商汇编语言可以直接访问处理器的寄存器、存储器和 I/O 等,提高程序运行效率。

RISC-V 版本的 GNU gas 是常用的 RISC-V 汇编器之一,其汇编语言的语法格式和命令字与 ARM 版本的 GNU gas 相同。

汇编程序格式

汇编语言程序由汇编命令(Assemble Directives)和指令语句组成。汇编命令ble bt wifi乐鑫c6模组乐鑫芯片esp8266代理商常在汇编语言源程序的起始部分,声明汇编源程序中标签和段的属性。指令语旬是汇编语言程序的基本单元。如图 5.6 所示,RISC-V 汇编语言的推令语句由标签、操作码、操作数和注释 4 个部分组成。标签是当前指令的位置标识符号,常作为汇编语言程序中的函数入口或跳转目标。标签是可选项。操作符是 RISC-V 指令符号、汇编语言伪指令或者是用户自定义的宏。


操作数是指令执行时所需的参数,与操作符之间用空格分开,可以是符号、常量或者是由符号和常量组成的表达式。ble bt wifi乐鑫c6模组乐鑫芯片esp8266代理商注释是为了解释语句或程序功能而添加的信息,对程序没有影响,仅仅起到注解作用,是可选项,以“;”和“#”作为分隔号,与指令隔开。或者使用类似 C语言的注释语法,用“//”和“/* */”对单行或者大段程序进行注释。所添加注释的格式与汇编器相关。在 SEGGER Embedded Stiduo 中,gas 采用类似于 C语言的注释语法。


[label:][标签:] operation 操作符 [operands][操作数] [;comment][:注释]

RISC-V 汇编语言指令语句格式

其中,在程序起始部分,用汇编命令声明段的属程序的主体部分是实现程序功能的指令语句。


示例5.1: 指令段声明示例。

/*属性区*/

1    .section .text,"ax"        //声明.text 段及其属性
2    .global _start        //声明全局标签 _start,指定程序入口
/*指令区 */
3    _start;    //定义标签
4    lui al,0x80    //装载立即数
5    addi al, al,0x100        //立即数加
6    la a3,_mydata        //装载标签地址
7    lw a2,(a3)        //从内存装载数据
8    loop;
9    nop        /空操作
10    j loop    //跳转到loop
11    .end        //当前文件中汇编程序结束


在示例 5.1中,用“.section.text”指定本段是程序的指令区。“ax”是该段的属性标识(flag),字符“a”和“x”分别表示该段可分配和可执行。
命令.global 声明 _start 是全局标签。代码部分由标签和指令语句组成。示例中的“_start”和“loop是标签,“lui”、“addi”“nop”和“j”是指令。


RISC-V 汇编语言还包括数据段。示例 5.2 是声明数据段的汇编语句。其中.section.rodata”声明本段为只读数据段,“.word”声明每个数据分配 4 字节空间并初始化数据。


示例 5.2: 数据段属性声明
/*属性声明区*/
1    .section    .rodata    //声明为只读数据段
2    .global    _mydata    //声明全局标签
/* 数据区城 */
3    _mydata:        //定义标签,数据区起始地址
4    .word 0x12345678,0x23456789    //分配内存并设定初始值
5    .end


伪指令


为了增强汇编程序的可读性和编程的方便性,ble bt wifi乐鑫c6模组乐鑫芯片esp8266代理商在汇编语言中常定义一些特殊的符号,通常称为伪指令,表示一-些处理器指令的特殊应用或者功能组合。表 5.7列出了RISC-V gas 中部分常用的 RV32I伪指令。


表5.7 gas 中部分常用 RV32I伪指令

功能    伪指令    RV32I指令
装载任意立即数Load Immediate    li t0,0x12345678    lui t0,0x12345addi t0,t0,0x678
装载内存地址Load Address    la t0,_func    auipc t0,(_func-pc)>>12 addi t0,t0,(_func-pe)&.0xfff
函数调用 call    call main    jal ra,main
返回 RETurn    ret    jalr x0,0,ra
寄存器间移动数据 Move    mv rd,rs    addi rd,rs,0
等于零时跳 Branch=0    beqz rs,imm    beq rs,x0 ,imm
跳转 Jump    j imm    jal x0 ,imm

地址:深圳市宝安区西乡街道麻布社区宝安互联网产业基地A区6栋7栋7706

邮箱:Sales@ferry-semi.com

版权所有©2020  深圳市飞睿科技有限公司  粤ICP备2020098907号    飞睿科技微波雷达wifi模块网站地图