第十八题 - Risc-V 汇编 - 条件返回

RISC-V入门(基础概念+汇编部分) 基于 汪辰老师的视频笔记 RISC-V入门 基于 汪辰老师的视频笔记 阅读详情
#include <stdio.h>
#include <stdlib.h>

// 使用内联汇编实现条件跳转逻辑的函数
int
conditional_jump (int a, int b)
{
  int result;

  // 内联汇编,实现条件跳转逻辑
  //
  // TIP:
  // 1. 如果a >= b,跳转到greater_equal标签
  // 2. 将b的值移动到结果中
  // 3. 无条件跳转到结束标签
  //
  // greater_equal标签
  // 1. 将a的值移动到结果中
  //
  // 结束标签
  // 输出操作数,result 用来存储返回值

  // >>> 替换 PLACEHOLDER 为合适的指令完成注释的功能
  __asm__ volatile (
      // 实现 a >= b,跳转到 greater_equal

      "bge %1, %2, greater_equal\n"
      "PLACEHOLDER\n"
      "mv %0, %2\n"
      "j end\n"
      "greater_equal:\n"
      "mv %0, %1\n"
      "end:\n"
      : "=r"(result)
      : "r"(a), "r"(b));

  // <<<

  return result;
}

int
main (int argc, char *argv[])
{

  if (argc != 3)
    {
      printf ("Usage: %s <int a> <int b>\n", argv[0]);
      return 1;
    }

  int a = atoi (argv[1]);
  int b = atoi (argv[2]);

  // 调用函数并输出结果
  int result = conditional_jump (a, b);
  printf ("Result: %d\n", result);

  return 0;
}

RISC-V汇编总结 一、risc-v汇编格式二、risc-v常用汇编伪指令三、risc-v汇编编程示例四、GCC内联汇编。 阅读详情

相关推荐

RISC-V学习基础(五)

动态链接程序的加载稍微有些复杂,操作系统不直接运行程序,而是运行一个动态链接器,由动态链接器开始运行程序,并负责处理所有外部函数的第一次调用,把它们加载到内存中,并且修改程序,填入正确的调用地址。汇编程序的开头是一些汇编指示符(assemble directives),它们是汇编器的命令,具有告诉汇编器代码和数据的位置、指定程序中使用的特定代码和数据常量等作用。图3.5为经典的C程序Hello World,编译器产生的汇编指令如图3.6,其中使用了图3.2的调用规范和图3.3、3.4的伪指令。

Caramel_biscuit的博客 1万+

一文学懂risc-v汇编操作

深入浅出的介绍各种risc-v指令以及介绍程序是如何在内存中组织起来的。

m0_62730135的博客 1万+

RISC-V学习整理

RISC-V学习整理 目前网上关于risc-v架构概念介绍的文章比较多,本文从开发角度把学习中的记录整理出来。 以下为作者为自学记录内容,文章仅抛砖引玉,有学习需要的同学还需以官网及risc-v专家的书籍为准。 有错误欢迎指出,共同学习进步。 RISC-V: RV32I RV32E RV32G表示RV32IMAFD I – 32位地址空间,32个通用寄存器 M – 整数乘,整数除 A – 原子...

csbei19891218的博客 1万+

【跟我学RISC-V】(二)RISC-V的基础知识学习与汇编练习

逐指令讲解和实践

April_Zhao的博客 8360

RISC-V汇编学习笔记(三):RISC-V汇编语言和条件判断分支转移指令

摆烂才是王道

weixin_75067193的博客 1722

如何建立自己的RISC-V编译环境--汇编?

如何建立自己的RISC-V编译环境–汇编? 1.RISC-V编译环境框架 这是我RISC-V编译环境的架构: build case common toolchain 一级目录 二级目录 说明 build - xx.hex、xx.bin、xx.dump & xx.elf生成的目录。 - Makefile 编译脚本。 - add(例子) 生成文件,根据test.c生成的xx.hex、xx.bin、xx.dump & xx.elf project - 各个目录的

a_weiming的博客 4611

计算机系统基础(六)之RISC-V汇编

系列文章目录 文章目录系列文章目录前言一、RISC-V汇编语言简介汇编语言的优缺点二、汇编语言语法介绍三、编译工具1.汇编器1.汇编器1.汇编器1.汇编器2.读入数据总结 前言 之前简单的讲过了RISC-V指令集,接下来我将简单的介绍一下RISC-V的汇编。更直观的去了解,C语言程序如何一步步变成机器语言并让机器执行程序。 提示:以下是本篇文章正文内容,下面案例可供参考 一、RISC-V汇编语言简介 汇编语言(Assembly Language)是一种“低级”语言,属于第二代计算机语言,它用一些容易理

qq_38915354的博客 1万+

从零认识cpu之RISC-V架构(一)RISC-V的汇编语言

初步了解RISC-V的汇编语言

weixin_47138614的博客 2364

【跟我学RISC-V】(一)认识RISC-V指令集并搭建实验环境

跟我一起学RISC-V指令集吧

April_Zhao的博客 2万+

从零认识cpu之RISC-V架构(二)RISC-V汇编语言编程(1)

RISC-V汇编语言介绍

weixin_47138614的博客 1548

FPGA数字信号处理中定点数的舍入与饱和硬件实现详解

在数字信号处理(DSP)的硬件实现中,定点数运算是核心基础。由于硬件资源(如FPGA的DSP Slice)的位宽有限,连续的乘加运算会导致数据位宽膨胀,严重影响时序和资源利用率。为解决此问题,必须引入舍入(Rounding)和饱和(Saturation)机制。舍入通过对低位进行四舍五入,在可控的精度损失下缩减位宽;饱和则作为动态范围的守护者,防止数据溢出导致信号环绕失真,确保系统行为确定。这两种技术是算法在有限精度硬件上正确、高效运行的关键,广泛应用于滤波器、FFT等DSP模块以及通信、音频处理等场景。本文

weixin_30954817的博客 248

RISC-V汇编语言(5)

汇编语言RISC-V 汇编语言入门汇编语言概念简介汇编语言语法介绍RISC-V 汇编指令总览RISC-V 汇编指令操作对象RISC-V 汇编指令编码格式指令格式(format)主机字节序 (HBO - Host Byte Order)RISC-V 汇编指令分类RISC-V 汇编伪指令一览RISC-V 汇编指令进阶算术运算指令逻辑运算指令移位运算指令内存读写指令条件分支指令无条件跳转指令RISC-V 指令寻址模式总结RISC-V 汇编函数调用约定函数调用过程概述汇编编程时为何需要制定函数调用约定有关寄存器的编

BLBQ962464的博客 4087

MQTT阿里云OTA 调试记录

2.验证,这个验证是什么意思呢,就是阿里云会把你包的信息,比如包大小,streamid(相当于包的识别码),版本号发送给你的设备,然后如果你没发送升级成功的包给阿里云,这里会是一直验证中的状态,那你的设备每次重新连接阿里云,发送connect包给阿里云的时候,阿里云就会发送一次这个验证(upgrade)包。提取到了之后就可以发送请求包了,这个请求包比较坑,也可能是我没付费,他的包一次最多只有1024个字节的数据。之前说了,验证状态下,设备发送connect包给阿里云,阿里云就会发一个upgrade包给你。

qq_42585211的博客 1231

RISC-V汇编学习(一)—— 基础认识

ISA(Instruction Set Architecture) 指令集架构,可以说是CPU的灵魂,是软硬件之间的桥梁;定义了指令集(指令类型和编码、寻址方式)、数据类型、存储模型、系统模型(中断、异常、特权等级等)、软件可见的处理器状态(通用寄存器、PC、处理器状态等)。

保持一颗永远好奇、勇于探索的心 8466

Vienna整流器SVPWM调制:7扇区划分与中点电位平衡的MATLAB/Simulink实现解析

本文深入解析Vienna整流器的SVPWM调制技术,重点介绍7扇区划分与中点电位平衡的MATLAB/Simulink实现方法。通过详细的算法推导和仿真模型构建,帮助工程师掌握整流器闭环控制策略,优化功率转换效率。内容涵盖扇区判断逻辑、矢量作用时间计算及中点电位平衡的PID调节等核心技术要点。

weixin_33937499的博客 387

移花接木,玩转CANoe的几种扩展接口应用(五)——串口设备

近期看到粉丝朋友在CANoe自动化测试方面的关注度很大,今天就围绕这个做一个专题,总结一下以往项目上用过的几种CANoe扩展接口,分享出来希望对相关领域的网友有所帮助。本文是该专题的第五篇文章,主要讲解了串口设备的功能配置、连接方法、配置方法、调用方法,最后分析了这种扩展借口应用的特点和适用场景。

Mr.Cssust的博客 2369

RISC-V汇编学习(二)—— 汇编语法

在具体汇编指令和汇编实战之前,还是有必要对RISC-V汇编进行下介绍,我一般称之为RISC-V汇编的“语法”,可能“语法”较少,也相对比较简单的原因,大部分的博主都是一笔带过,但本着循序渐进的原则,还是简单概述下,以便加深认识。

保持一颗永远好奇、勇于探索的心 8096

数字图像处理:直方图匹配或规定化Histogram Matching (Specification)原理及感悟

本文介绍了连续图像和数字图像直方图匹配(直方图规定化)的原理、处理过程,并提供了案例进行了讲解。可以看到,直方图均衡处理是直方图匹配的一个重要桥梁。 最后,对于直方图规定化这个翻译个人觉得很low,个人感觉叫指定直方图更好理解,但Histogram Specification怎么翻译确实不太好把握,因此还是叫Histogram Matching直方图匹配最好。

老猿Python 2880

RISC-V 常用汇编指令

risc-v 常用汇编指令

outsider 1万+

ImportError: DLL load failed while importing _pydantic_core: 找不到指定的程序对应解决方案

本文主要介绍了ImportError: DLL load failed while importing _pydantic_core: 找不到指定的程序对应解决方案,希望能对使用Python的同学们有所帮助。 文章目录 1. 问题描述 2. 解决方案

weixin_43178406的博客 19万+

5分钟用AI搞定顶刊级引言!掌握三段式结构+避坑要点,让你的Introduction更有说服力(附提示词)

说明你是怎么来填补这个缺口的,一句话概括你的研究,再简述你采用了什么新方法、新模型或新视角,也就是创新点,最后说明你的方案是怎么克服第二段提到的缺口的,带来了哪些贡献,注意要确保方案与第二段提到的缺口一一对应。以上三段式引言模板,是非常经典的问题导向型结构,相比传统的结构,这种结构更能吸引是审稿人的注意,希望这篇分享的模板能给在你写论文引言时,提供一点帮助。上一段写好后,就在前人研究的基础上,亮出自己的方案,借助AI说明自己的研究,用了什么新方法/框架/理论/视角来填补这个缺口的。

智能AI让学术科研更容易 745

RISC-V汇编学习(五)—— 汇编实战、GCC内联汇编(基于芯来平台)

高级编程语言如C、C++、Java、Python等已经极大地简化了软件开发的过程,并且在大多数应用领域中提供了足够的抽象层次来隐藏底层硬件细节,但在某些特定场景下,汇编语言仍然不可或缺。但是掌握汇编语言不仅要求对目标架构有深入的理解,还需要投入大量的时间和精力去学习其语法和最佳实践,这对于大部分的开发者来说还是有难度的,实际上也没有必要完全掌握,因为大部分人并不会直接去写汇编程序。

保持一颗永远好奇、勇于探索的心 8561

Day 01: 与Python的第一次亲密接触

环境搭建 、第一个程序 Hello, World!、以及Python之禅 (The Zen of Python) 的解读。

杨小扩的博客 220

RISC-V汇编学习(三)—— RV指令集

RISC-V是一种开源的指令集架构(ISA),它遵循精简指令集计算(RISC)的原则,旨在为各种计算设备提供高效、灵活的基础。与传统的专有ISA不同,RISC-V的设计强调简洁性、模块化和可扩展性,使其成为从嵌入式系统到超级计算机广泛应用的理想选择。博客列举RISC-V指令集,包括基础整数指令集RV32I/RV64I以及一系列标准扩展,如乘法和除法(M)、原子操作(A)、浮点运算(F/D)等

保持一颗永远好奇、勇于探索的心 1万+

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

RISC-V 汇编语言

RISCV下的汇编、链接全过程

weixin_51409218的博客 2345

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

一文看懂RISC-V的RV32I指令集

reference: <riscv-spec.pdf> 1.RV32I指令集格式 六种基本指令格式,分别是: 目的 类型 用于寄存器-寄存器操作 R 类型指令 用于短立即数和访存 load 操作 I 型指令 用于访存 store 操作 S 型指令 用于条件跳转操作 B 类型指令 用于长立即数 U 型指令 用于无条件跳转 J 型指令   如下所述,分支指令(B 类型)的立即数字段在 S 类型的基础上旋转了 1 位。跳转指令(J类型)的直接字段在 U 类型的

limanjihe的专栏 2万+
上一篇: 第六题 ld 脚本 - 指定内存区域
下一篇: 嵌入式学习之Linux系统编程篇 信号通道
TheAnswerisy
博客等级 码龄8年 43粉丝 64原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值