当前位置: 首页 > news >正文

(二)汇编语句组成

一个完整的 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(注释): 常用方式,“#” 开始到当前行结束。

相关文章:

(二)汇编语句组成

一个完整的 RISC-V 汇编程序有多条 语句(statement) 组成。 一条典型的 RISC-V 汇编 语句 由 3 部分组成: 1.标签 List item label(标签): 标签是标识程序位置的记号。通常定义一个名称然后加上":"后缀。…...

Linux C 网络编程概述

网络编程 计算机网络概述分类网络体系结构通信协议通信流程网络通信帧格式以太网帧格式分析ARP 协议分析IP 数据报分析IP分类IP 分配子网掩码 TCP 段分析 TCP三次握手协议 ⭐TCP四次挥手协议 ⭐ TCP编程基于 TCP 客户端编程-步骤说明基于 TCP 服务器端编程-步骤说明基于 TCP 服…...

腾讯云标准型s5和s6有什么区别?CPU处理器有差异吗?

腾讯云服务器CVM标准型S5和S6有什么区别?都是标准型云服务器,标准型S5是次新一代云服务器规格,标准型S6是最新一代的云服务器,S6实例的CPU处理器主频性能要高于S5实例,同CPU内存配置下的标准型S6实例要比S5实例性能更好…...

WPF TextBox实现placeholder

WPF里TextBox没有placeholder,需要自己实现,本篇博客介绍WPF TextBox实现placeholder,效果如下: 实现技巧是在 TextBox 控件的 Style 中使用触发器(Triggers)来显示和隐藏placeholder文本。xmal代码如下&am…...

UiPath Studio 2023.10 Crack

UiPath Studio是一款功能强大且用户友好的集成开发环境 (IDE),专为机器人流程自动化 (RPA) 设计。它由自动化技术领域的领先公司UiPath开发。 以下是 UiPath Studio 的一些主要功能和组件: 图形用户界面 (GUI):UiPath Studio 具有直观且用户友…...

SpringBoot——入门及原理

SpringBoot用来简化Spring应用开发,约定大于配置,去繁从简,是由Pivotal团队提供的全新框架。其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置(有特殊需求可以添加自己的配置覆盖默认配…...

js实现页面滚动时自动切换Sidebar标签,点击标签自动滚动页面

js实现页面滚动时自动切换Sidebar侧边导航标签&#xff0c;点击标签自动滚动页面 <van-sidebar class"sidebar" v-model"activeKey"><van-sidebar-item :title"i.title" click"onChange(i)" v-for"(i,k) in activeList&…...

Failed to load resource: net::ERR_UPLOAD_FILE_CHANGED 谷歌浏览器就会有这个问题 其他的浏览器没有

Failed to load resource: net::ERR_UPLOAD_FILE_CHANGED 10 10: Difficulties in file uploading through all browsers and applications...

微信小程序 prettier 格式化

一、安装prettier插件 二、打开设置 然后再打开setting.json 新增代码 {"editor.formatOnSave": true,"editor.defaultFormatter": "esbenp.prettier-vscode","prettier.documentSelectors": ["**/*.wxml", "**/*.wx…...

SystemVerilog学习 (10)——线程控制

一、概述 在实际硬件中,时序逻辑通过时钟沿来激活,组合逻辑的输出则随着输人的变化而变化。所有这些并发的活动在Verilog 的寄存器传输级上是通过initial和 always块语句、实例化和连续赋值语句来模拟的。为了模拟和检验这些语句块,测试平台使用许多并发执行的线程。在测试平台…...

【开题报告】基于SpringBoot的二手汽车交易平台的设计与实现

1.研究背景 随着社会经济的不断发展&#xff0c;二手汽车交易市场逐渐壮大&#xff0c;二手汽车交易平台作为一种重要的电子商务形式备受关注。本文基于Spring Boot框架&#xff0c;旨在设计与实现一个高效、安全、用户友好的二手汽车交易平台。本文将深入探讨二手汽车市场发展…...

Python 爬虫入门

文章目录 Python 爬虫入门requests 库beautifulsoup4库函数findall()&#xff0c;find()函数get() 爬虫实例 1&#xff1a;抓小说爬虫实例 2&#xff1a;抓豆瓣 top 250 的电影信息后记 Python 爬虫入门 Python 的爬虫功能使得程序员可以快速抓取并分析网页中的信息&#xff0…...

[ 加密 ] SHA256

SHA256 例程 一般文件的完整性要使用md5或者sha进行完整性校验&#xff0c;这里提供两个函数&#xff0c; intact_update_sha 是计算指定文件SHA值并保存到SHA文件 intact_check_sha 计算文件SHA值并和SHA文件进行对比 编译方法&#xff1a; gcc demo.c -lssl -lcrypto #…...

推荐一个windows上传linux服务器/linux服务器的docker镜像的工具,摆脱docker cp,以及解决常见问题。

Lrzsz&#xff0c;又称为lrz和lsz&#xff0c;是一个用于在Unix、Linux、macOS等操作系统上进行串行文件传输的工具。它支持基于X/Y/ZModem协议的文件传输&#xff0c;能够通过串口或者Telnet/SSH等网络连接进行文件传输。Lrzsz具有传输速度快、可靠性高、易于使用等特点&#…...

《QT从基础到进阶·三十五》QT插件实现侧边工具栏tabBar

tabBar是用QT插件实现的一个dll&#xff0c;对于插件的使用可以参考文章&#xff1a; 《QT从基础到进阶三十三》QT插件开发QtPlugin 源码放在文章末尾 该功能类似侧边工具栏&#xff0c;可以在该标签栏上添加自己开发的界面&#xff0c;实现代码如下&#xff1a; 1、所有功能…...

风丘电动汽车热管理方案 为您的汽车研发保驾护航

热管理技术作为汽车节能、提高经济性和保障安全性的重要措施&#xff0c;在汽车研发过程中具有重要作用。传统燃油汽车的热管理系统主要包括发动机、变速器散热系统和汽车空调&#xff0c;而电动汽车的热管理系统在燃油汽车热管理架构的基础之上&#xff0c;又增加了电机电控热…...

每日一练 | 华为认证真题练习Day134

1、开启标准STP协议的交换机可能存在哪些端口状态&#xff1f;&#xff08;多选&#xff09; A. Discarding B. Listening C. Disabled D. Forwarding 2、下列路由协议中优先级最高的是&#xff1f; A. Direct B. RIP C. OSPF D. Static 3、参考如图所示的输出结果&…...

python连接hive报错:TypeError: can‘t concat str to bytes

目录 一、完整报错 二、解决 三、 其他报错 四、impala方式连接hive 或者直接使用 pip install pyhive[hive] 安装。需要先 pip uninstall pyhive。 一、完整报错 Traceback (most recent call last): File "D:/Gitlab/my_world/hive2csv.py", line 18, in <…...

虹科示波器 | 汽车免拆检修 | 2015款奔驰G63AMG车发动机偶尔自动熄火

一、故障现象 一辆2015款奔驰G63AMG车&#xff0c;搭载157发动机&#xff0c;累计行驶里程约为9.4万km。车主反映&#xff0c;该车低速行驶时&#xff0c;发动机偶尔会自动熄火&#xff0c;故障大概1个星期出现1次。 二、故障诊断 接车后路试&#xff0c;故障未能再现。用故障检…...

10 Redis的持久化

Redis支持RDB和AOF两种持久化机制 1、RDB(Redis DataBase) 是对命令的全量快照随着key的数量增大&#xff0c;那么写入磁盘的开销也会越来越大 2、RDB文件的生成是否会阻塞主线程 save: 使用save的方式会阻塞主线程&#xff0c;影响redis的性能 bgsave: 一般情况下不会阻塞…...

基于ESP32与FreeRTOS的自平衡机器人:从PID控制到实时系统实战

1. 项目概述&#xff1a;从零到一&#xff0c;打造一个会“思考”的自平衡机器人如果你对嵌入式开发、机器人控制或者ESP32感兴趣&#xff0c;并且曾经看着那些在赛道上飞驰或者稳稳站立的机器人感到好奇&#xff0c;那么你找对地方了。今天我要分享的&#xff0c;不是一个简单…...

AI智能体技能研究:如何高效利用Awesome-Skills-Paper构建个人知识库

1. 项目概述与核心价值最近在整理智能体&#xff08;Agent&#xff09;相关的学习资料时&#xff0c;发现了一个非常实用的开源项目——Awesome-Skills-Paper。这个项目本质上是一个经过精心整理的、关于“智能体技能”的学术论文清单。对于任何正在研究或学习AI智能体&#xf…...

易元AI保姆级上手指南:30分钟从小白到批量出片生成式AI将重新定义电商

易元AI保姆级上手指南&#xff1a;30分钟从小白到批量出片 生成式AI将重新定义电商增长&#xff0c;你的认知准备好了吗&#xff1f;电商AI视频生成正在成为短视频电商未来趋势中的关键变量。过去&#xff0c;电商增长依赖流量红利与运营能力&#xff0c;而在当前阶段&#xf…...

终极Windows热键冲突检测指南:Hotkey Detective完全解析

终极Windows热键冲突检测指南&#xff1a;Hotkey Detective完全解析 【免费下载链接】hotkey-detective A small program for investigating stolen key combinations under Windows 7 and later. 项目地址: https://gitcode.com/gh_mirrors/ho/hotkey-detective 你是否…...

HCOMM获取拓扑层级rank数量

HcclRankGraphGetRankSizeByLayer 【免费下载链接】hcomm HCOMM&#xff08;Huawei Communication&#xff09;是HCCL的通信基础库&#xff0c;提供通信域以及通信资源的管理能力。 项目地址: https://gitcode.com/cann/hcomm 产品支持情况 Ascend 950PR/Ascend 950DT&…...

tao-8k Embedding模型工业质检:设备说明书长文本向量化与故障描述语义匹配

tao-8k Embedding模型工业质检&#xff1a;设备说明书长文本向量化与故障描述语义匹配 1. 工业质检场景中的文本匹配挑战 在工业设备维护和质检领域&#xff0c;技术人员每天都要面对大量的设备说明书、故障报告和维护记录。传统的关键词匹配方式经常遇到这样的问题&#xff…...

构式语法与AI融合:从语言认知到可解释NLP的实践路径

1. 构式语法与人工智能&#xff1a;一场迟来的双向奔赴如果你同时关注语言学理论和人工智能的前沿进展&#xff0c;可能会觉得这是两个平行世界。一边是语言学家在探讨“构式”、“形式-意义配对”和“基于使用的模型”&#xff0c;另一边是AI工程师在调试Transformer模型、调整…...

对比自行维护与使用Taotoken在API密钥管理与审计上的差异

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 对比自行维护与使用Taotoken在API密钥管理与审计上的差异 在构建基于大模型的应用时&#xff0c;API密钥的管理与审计是保障服务安…...

CANN/runtime Device P2P示例

2_device_P2P 【免费下载链接】runtime 本项目提供CANN运行时组件和维测功能组件。 项目地址: https://gitcode.com/cann/runtime 描述 本样例展示了如何在多个Device之间进行切换&#xff0c;并进行内存复制。 产品支持情况 本样例支持以下产品&#xff1a; 产品是…...

CANN PTO-ISA 矩阵乘法

Matrix Multiply 【免费下载链接】pto-isa Parallel Tile Operation (PTO) is a virtual instruction set architecture designed by Ascend CANN, focusing on tile-level operations. This repository offers high-performance, cross-platform tile operations across Ascen…...