(二)汇编语句组成

一个完整的 RISC-V 汇编程序有多条 语句(statement) 组成。
一条典型的 RISC-V 汇编 语句 由 3 部分组成:
在这里插入图片描述

1.标签

  • List item label(标签): 标签是标识程序位置的记号。通常定义一个名称然后加上":"后缀。这些程序位置可以被其他汇编指或指示符令引用。
    下面的汇编程序包含两个标签,第1行的x:和第4行的sum10:。标签x:处包含了一个变量,通过指示符.word 10表示。sum10:标识了sum10例程的第一条指令位置,也即是函数例程的入口。同时,这个例子中第5行指令lw引用了变量x。
    在这里插入图片描述

2.operation(操作)

  • instruction(指令): 直接对应二进制机器指令的字符串
  • pseudo-instruction(伪指令): 为了提高编写代码的效率,可以用一条伪指令指示汇编器产生多条实际的指令(instructions)。
  • directive(指示/伪操作): 通过类似指令的形式(以“.”开头),通知汇编器如何控制代码的产生等,不对应具体的指令。
  • **macro:**采用 .macro/.endm 自定义的宏

2.1 .global 全局的符号

.global symbol_name或者.globl symbol_name
.global和.globl伪操作用于定义一个全局的符号,使得链接器能够全局识别它,即一个程序文件中定义的符号能够被所有其他程序文件可见。
通过标签创建或者通过.set和.equ创建的符号会作为本地符号被保存到符号表内。通过.globl指令则可以将这些符号转为全局符号。例如下面的代码,_start和max_value被转换成了全局符号。意味着_start、max_value可以在其它文件使用。
在这里插入图片描述

.local 局部符号

.local symbol_name
.local伪操作用于定义局部符号,使得此符号不能够被其他程序文件可见。

.weak 弱属性

.weak symbol_name
在汇编程序中,符号的默认属性为强(strong),.weak伪操作则用于设置符号的属性为弱(weak),如果此符号之前没有定义过,则同时创建此符号并定义其属性为weak。
如果符号的属性为weak,那么它无需定义具体的内容。在链接的过程中,另外一个属性为strong的同名符号可以将此weak符号的内容强制覆盖。利用此特性,.weak伪操作常用于预先预留一个空符号,使得其能够通过汇编器语法检查,但是在后续的程序中定义符号的真正实体,并且在链接阶段将空符号覆盖并链接。

.section 排到指顶段

.section name [, subsection]
.section伪操作指明将接下来的代码汇编链接到名为name的段(Section)当中,还可以指定可选的子段(Subsection)。常见的段如.text、.data、.rodata、.bss:
“.section .text”伪操作将接下来的代码汇编链接到.text段。
“.section .data”伪操作将接下来的代码汇编链接到.data段。
“.section .rodata”伪操作将接下来的代码汇编链接到.rodata段。
“.section .bss”伪操作将接下来的代码汇编链接到.bss段。

.macro 将汇编代码定义成一个宏

.macro和.endm
.macro和.emdm伪操作用于将一串汇编代码定义成为一个宏。
“.macro name arg1 [, argn]”用于定义名为name的宏,并且可以传入若干由分号分隔的参数。
“.endm”用于结束宏定义。

.align 对齐代码

.align integer
.align伪操作用于将当前PC地址推进到“2的integer次方个字节”对齐的位置。譬如“.align 3”即表示将当前PC地址推进到8个字节对齐的位置处。

.org 规定程序的起始地址

在这里插入图片描述
在这里插入图片描述

意味着0x80地址处的指令为 j reset_handler

3. comment(注释)

  • comment(注释): 常用方式,“#” 开始到当前行结束。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/199709.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PP-PicoDet算法训练行人检测模型

PP-PicoDet算法训练行人检测模型 1,效果图2,PP-PicoDet介绍3,使用飞浆框架训练模型1,准备好图片和对应的标注文件2,划分训练集和验证集3,vi label_list.txt4,目录结构5,修改配置文件…

【Windows 常用工具系列 11 -- 福昕PDF搜索高亮过的文本】

文章目录 福昕 PDF 搜索高亮过的文本 福昕 PDF 搜索高亮过的文本 在 pdf 文档阅读过程中,我们需要经常高亮一些文本,以方便下次阅读时找到重点。我这边使用的是 福昕PDF 阅读器,下面就介绍下如何在福昕阅读器中搜索已经高亮过的文本。

场景交互与场景漫游-交运算与对象选取(8-1)

交运算与对象选取 在面对大规模的场景管理时,场景图形的交运算和图形对象的拾取变成了一项基本工作。OSG作为一个场景管理系统,自然也实现了场景图形的交运算,交运算主要封装在osgUtil 工具中在OSG中,osgUtil是一个非常强有力的工…

python实战—核心基础4(超市购物小票随机抽奖程序) lv1

目录 一、核心代码解释 二、代码 三、运行截图 一、核心代码解释 1、random() 函数 描述 random() 方法返回随机生成的一个实数,它在[0,1)范围内。 语法 以下是 random() 方法的语法: import randomrandom.random() 注意:random()是不能直接访问…

OpenLDAP配置web管理界面PhpLDAPAdmin服务-centos9stream

之前已经发了一篇关于centos9下面配置openldap多主高可用集群的内容,不会配置ldap集群的请参考:服务器集群配置LDAP统一认证高可用集群(配置tsl安全链接)-centos9stream-openldap2.6.2-CSDN博客 这里跟着前篇文章详细说明如何配置…

在回调之间共享数据

可以在 App 中为 UI 组件编写回调函数,以指定用户与其交互时的行为方式。 在具有多个相互依赖的 UI 组件的 App 中,回调函数通常必须访问主 App 函数中定义的数据,或与其他回调函数共享数据。例如,如果创建一个具有列表框的 App&a…

.Net中Redis的基本使用

前言 Redis可以用来存储、缓存和消息传递。它具有高性能、持久化、高可用性、扩展性和灵活性等特点,尤其适用于处理高并发业务和大量数据量的系统,它支持多种数据结构,如字符串、哈希表、列表、集合、有序集合等。 Redis的使用 安装包Ser…

云计算赛项容器云2023搭建

部署容器云平台[5 分] 使 用 OpenStack 私 有 云 平 台 创 建 两 台 云 主 机 , 云 主 机 类 型 使 用 4vCPU/12G/100G 类型,分别作为 Kubernetes 集群的 Master 节点和 node 节点, 然后完成 Kubernetes 集群的部署,并完成 Istio …

【MySql】13- 实践篇(十一)

文章目录 1. 自增主键为什么不是连续的?1.1 自增值保存在哪儿?1.2 自增值修改机制1.2.1 自增值的修改时机1.2.2 自增值为什么不能回退? 1.3 自增锁的优化1.3.1 自增锁设计历史 2. Insert语句为何很多锁?2.1 insert … select 语句2.2 insert 循环写入2…

鸿蒙4.0真机调试踩坑

传言鸿蒙next版本将不再兼容Android,所以领导安排做下鸿蒙开发的调研工作。 鸿蒙开发指南其实已经非常的友好了。但是鸿蒙开发本身还是有些坑要踩,这篇文章主要讲了鸿蒙真机调试问题。 目前手上的真机为华为 nova6,处理器为麒麟990.鸿蒙系统…

AI绘画使用Stable Diffusion(SDXL)绘制三星堆风格的图片

一、前言 三星堆文化是一种古老的中国文化,它以其精湛的青铜铸造技术闻名,出土文物中最著名的包括青铜面具、青铜人像、金杖、玉器等。这些文物具有独特的艺术风格,显示了高度的工艺水平和复杂的社会结构。 青铜面具的巨大眼睛和突出的颧骨&a…

11.16~11.19绘制图表,导入EXCEL中数据,进行拟合

这个错误通常是由于传递给curve_fit函数的数据类型不正确引起的。根据你提供的代码和错误信息,有几个可能的原因: 数据类型错误:请确保ce_data、lg_data和product_data是NumPy数组或类似的可迭代对象,且其元素的数据类型为浮点数。…

C#,怎么修改(VS)Visual Studio 2022支持的C#版本

一些文字来自于 Microsoft . (只需要读下面的红色文字即可!) 1 C# 语言版本控制 最新的 C# 编译器根据项目的一个或多个目标框架确定默认语言版本。 Visual Studio 不提供用于更改值的 UI,但可以通过编辑 .csproj 文件来更改值。…

基于SSM的学院网站设计与实现

末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:Vue 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目:是 目录…

4.3 Windows驱动开发:监控进程与线程对象操作

在内核中,可以使用ObRegisterCallbacks这个内核回调函数来实现监控进程和线程对象操作。通过注册一个OB_CALLBACK_REGISTRATION回调结构体,可以指定所需的回调函数和回调的监控类型。这个回调结构体包含了回调函数和监控的对象类型,还有一个A…

Camtasia2024年破解版安装包如何下载?

作为一个互联网人,没少在录屏软件这个坑里摸爬滚打。培训、学习、游戏、影视解说……都得用它。这时候没个拿得出手的私藏软件,还怎么混?说实话,录屏软件这两年也用了不少,基本功能是有但总觉得缺点什么,直…

C进阶---文件操作

我们在日常使用电脑保存文件时,其目的就是为了便于以后查看、修改、更新等操作;保存在文件中可以使数据持久化,所以今天我们家里学习文件的相关操作。 一、文件 1.1什么是文件 磁盘上的文件是文件。 在程序设计中,文件一般分…

某60区块链安全之51%攻击实战学习记录

区块链安全 文章目录 区块链安全51%攻击实战实验目的实验环境实验工具实验原理攻击过程 51%攻击实战 实验目的 1.理解并掌握区块链基本概念及区块链原理 2.理解区块链分又问题 3.理解掌握区块链51%算力攻击原理与利用 4.找到题目漏洞进行分析并形成利用 实验环境 1.Ubuntu1…

基于RK3588全高端智能终端机器人主板

一、小尺寸板型设计 该款主板为小型板,尺寸仅为125*85mm,更小更紧凑,可完美适应各类高端智能自助终端; 二、八核高端处理器 采用RK3588S八核64位处理器,8nm LP制程,主频最高达2.4GHz,搭载Andr…

解决requests 2.28.x版本SSL错误:证书验证失败

1、问题背景 在使用requests 2.28.1版本时,我进行HTTP post传输报告负载时,由于SSL验证设置为True,请求失败,错误如下:(Caused by SSLError(SSLCertVerificationError(1, ‘[SSL: CERTIFICATE_VERIFY_FAILED] certifi…