指令:计算机的语言(五)
2.9 人机交互
ASCII与二进制
对应表略
字节转移指令
lbu:加载无符号字节,从内存中加载1个字节,放在寄存器最右边8位。
sb:存储字节指令,从寄存器的最右边取1个字节并将其写入内存。
复制1个字节顺序如下:
lbu x12, 0(x10) //读取x10中地址值对应的字节,写入x12的低8位
sb x12, 0(x11) //将x12中的值的低8位写入x11对应的地址内存
字符通常组合成具有可变数量的字符串。字符串表示有三种选择:
- 字符串的第一个位置,用于给出字符串的长度
- 附加带有字符串长度(如在结构体中)的变量。
- 字符串的最后位置用一个字符标记字符串结尾。
C语言使用第三种选择,使用值为0的字节终止字符串(ASCII中为null)
Java使用第一个选择。
C语言中字符串“Cal”用4个字节表示:十进制 67,97,108,0
例题:编译字符串复制程序,展示如何使用C语言字符串
void strcpy(char x[], char y[]){size_t i;i = 0;while((x[i]=y[i])!='\0')i += 1;
}
答案:下面是基本的RISC-V汇编代码段
strcpy://数组x,y基址分别存放x10,x11中,i在x19寄存器中addi sp, sp, -4 //1个字的指针sw x19, 0(sp) //i在x19寄存器中,保存19寄存器到栈中add x19, x0, x0 //i = 0 + 0,将i初始化为0
L1: add x5, x19, x11 //y[i]地址在x5中,通过y首地址+i来组成lbu x6, 0(x5) //x6 = y[i],使用无符号加载字节,将字符放入x6中add x7, x19, x10//x[i]地址在x7中sb x6, 0(x7) //将x6的值写入x7地址所在内存中beg x6, x0, L2 //如果字符串最后一个字符是0,退出addi x19, x19, 1 //i = i + 1jal x0, L1
L2: lw x19, 0(sp) //存回旧的x19addi sp, sp, 4 //弹出1字的栈jalr x0, 0(x1) //返回程序
在C语言中字符串复制通常使用指针而不是数组,以避免在上面代码中对i进行操作。
以上过程是一个叶程序,编译器可以将i分配给临时寄存器并避免保存和恢复x19,当编译器找到一个叶过程时,它会在使用必须保存的寄存器之前耗尽所有的临时寄存器。
Java中的字符和字符串
Java用Unicode,16位表示1个字符。加载半字(lh),存储半字(sh)。
字符串是Java类,由多个方法,包含字符串长度的字,类似于Java数组。
详细阐述
RISC-V需要保持栈的四字(16字节),地址对齐,以获得更好的性能。
意味着栈上分配的char变量可能多达16个字节,即使不需要这么多。
C会把字符串变量或字节型数组每16个字节压缩为四字,Java字符串变量或short数组将每8个半字压缩为四字。
相关文章:
指令:计算机的语言(五)
2.9 人机交互 ASCII与二进制 对应表略 字节转移指令 lbu:加载无符号字节,从内存中加载1个字节,放在寄存器最右边8位。 sb:存储字节指令,从寄存器的最右边取1个字节并将其写入内存。 复制1个字节顺序如下…...
C#笔记(1)
解决方案: 【1】组织项目:把项目放在放在一个解决方案中,统一开发,统一编译。 【2】管理项目:开发中的任何问题,在统一编译过程中,都能随时发现。也可以添加第三方的库文件。 命名空间: 命名空…...
SSDF攻击、防御与展望
摘要: 随着无线通信业务的不断发展,频域也越来越成为了一种珍贵的稀缺资源,与此同时,相应的无线电安全问题层出不穷,为无线通信造成了十分恶劣的影响,本文从深入理解认知无线电安全开始,对一些典…...
MedMamba代码解释及用于糖尿病视网膜病变分类
MedMamba原理和用于糖尿病视网膜病变检测尝试 1.MedMamba原理 MedMamba发表于2024.9.28,是构建在Vision Mamba基础之上,融合了卷积神经网的架构,结构如下图: 原理简述就是图片输入后按通道输入后切分为两部分,一部分走…...
单点登录的要点
单点登录(SSO)是一种身份验证服务,它允许用户使用一组凭据登录一次,然后在多个应用程序中访问其他应用程序而无需重新进行身份验证。这样,用户只需一次登录即可访问整个应用生态系统,提高了用户体验并简化了…...
linux线程 | 一点通你的互斥锁 | 同步与互斥
前言:本篇文章主要讲述linux线程的互斥的知识。 讲解流程为先讲解锁的工作原理, 再自己封装一下锁并且使用一下。 做完这些就要输出一堆理论性的东西, 但博主会总结两条结论!!最后就是讲一下死锁。 那么, 废…...
全栈开发小项目
用到的技术栈: nodejswebpackknockoutmongodbPM2rabbitmq 以下是一个综合指南,展示如何将 Node.js、Webpack、Knockout.js、MongoDB、PM2 和 RabbitMQ 集成到一个项目中。 我们将在这一项目中添加 RabbitMQ,用于处理消息队列。这对于任务分…...
批处理一键创建扫描仪桌面打开快捷方式图标 简单直接有效 扫描文档图片的应急策略
办公生活中,我们在安装完多功能一体机的打印驱动之后,找不到扫描文件的地方,如果驱动程序安装正确,我们可以用系统自带的扫描仪程序调用这种打印机或复印机的扫描程序即可,它在电脑系统中的位置一般是:C:\W…...
【服务器知识】Tomcat简单入门
文章目录 概述Apache Tomcat 介绍主要特性版本历史使用场景 核心架构Valve机制详细说明请求处理过程 Tomcat安装Windows系统下Tomcat的安装与配置:步骤1:安装JDK步骤2:下载Tomcat步骤3:解压Tomcat步骤4:配置环境变量&a…...
【前端】Matter:过滤与高级碰撞检测
在物理引擎中,控制物体的碰撞行为是物理模拟的核心之一。Matter.js 提供了强大的碰撞检测机制和碰撞过滤功能,让开发者可以控制哪些物体能够相互碰撞,如何处理复杂的碰撞情况。本文将详细介绍 碰撞过滤 (Collision Filtering) 与 高级碰撞检测…...
wps图标没有坐标轴标题怎么办?wps表格不能用enter下怎么办?
目录 wps图标没有坐标轴标题怎么办 一、在WPS PPT中添加坐标轴标题 二、在WPS Excel中添加坐标轴标题 wps表格不能用enter下怎么办 一、检查并修改设置 二、检查单元格保护状态 三、使用快捷键实现换行 wps图标没有坐标轴标题怎么办 一、在WPS PPT中添加坐标轴标题 插入…...
在ESP-IDF环境中如何进行多文件中的数据流转-FreeRTOS实时操作系统_流缓存区“xMessageBuffer”
一、建立三个源文件和对应的头文件 建立文件名,如图所示 图 1-1 二、包含相应的头文件 main.h 图 2-1 mess_send.h mess_rece.h和这个中类似,不明白的大家看我最后面的源码分享 图2-2 三、声明消息缓存区的句柄 大家注意,在main.c中定义的是全局变…...
ConcurrentLinkedQueue适合什么样的使用场景?
ConcurrentLinkedQueue 是 Java 中一种无界线程安全的队列,适合多线程环境中的高并发场景。以下是一些它特别适合的使用场景: 1. 高频读操作,低频写操作 ConcurrentLinkedQueue 对于实际应用中读操作相对频繁,写操作较少的场景非…...
C语言 | Leetcode C语言题解之第480题滑动窗口中位数
题目: 题解: struct Heap {int* heap;int heapSize;int realSize;bool (*cmp)(int, int); };void init(struct Heap* obj, int n, bool (*cmp)(int, int)) {obj->heap malloc(sizeof(int) * (n 1));obj->heapSize 0;obj->cmp cmp; }bool c…...
LabVIEW开发如何实现降维打击
在LabVIEW开发中实现“降维打击”可以理解为利用软件优势和高效工具来解决复杂的问题,将多维度、多层次的技术简化为容易操作和管理的单一维度,达到出其不意的效果。以下是几种关键策略: 1. 模块化设计与封装 将复杂系统分解为若干模块&…...
docker 文件目录迁移
文章参考 du -hs /var/lib/docker/ 命令查看磁盘使用情况。 du -hs /var/lib/docker/docker system df命令,类似于Linux上的df命令,用于查看Docker的磁盘使用情况: rootnn0:~$ docker system df TYPE TOTAL ACTIVE SIZE RECLAIMABLE Images 7 2 122.2…...
Markdown 标题
Markdown 标题 Markdown 是一种轻量级标记语言,它允许人们使用易读易写的纯文本格式编写文档,然后转换成格式化的HTML代码。Markdown 的语法简洁明了,广泛用于撰写文档、博客文章、笔记等。本文将详细介绍 Markdown 的标题语法及其在文档中的应用。 Markdown 标题语法 在…...
【动手学电机驱动】TI InstaSPIN-FOC(5)Lab04 力矩控制
TI InstaSPIN-FOC(1)电机驱动和控制测试平台 TI InstaSPIN-FOC(2)Lab01 闪灯实验 TI InstaSPIN-FOC(3)Lab03a 测量电压电流漂移量 TI InstaSPIN-FOC(4)Lab02b 电机参数辨识 TI Insta…...
Mysql的CommunicationsException
一、报错内容 com.mysql.cj.jdbc.exceptions.CommunicationsException: The last packet successfully received from the server was 1,500,378 milliseconds ago. The last packet sent successfully to the server was 1,500,378 milliseconds ago. is longer than the s…...
C++学习笔记----9、发现继承的技巧(二)---- 重用目的的继承
现在你对继承的基本语法已经比较熟悉了,是时候探索继承是c语言中重要属性的一个主要原因了。继承是一个装备允许你平衡既有代码。本节会举出基于代码重用目的的继承的例子。 1、WeatherPrediction类 假想你有一个任务,写一个程序来发出简单的天气预报&a…...
分享一个网络智能运维系统
项目简介 网络智能运维系统是一款面向网络设备的一体化智能运维管理平台,旨在帮助企业 IT 运维团队高效、自动化地完成网络设备的日常巡检、配置备份、批量操作及定时任务调度等核心工作。系统支持多品牌设备(华为、H3C、思科、锐捷、Juniper、MikroTik …...
让开发流程更高效:为 Visual Studio 订阅用户解锁 Syncfusion凸
一、什么是requests? requests 是一个用于发送HTTP请求的 Python 库。 它可以帮助你: 轻松发送GET、POST、PUT、DELETE等请求 处理Cookie、会话等复杂性 自动解压缩内容 处理国际化域名和URL 二、应用场景 requests 广泛应用于以下实际场景: …...
优启通 WINPE 如何创建桌面快捷方式?【详细图文教程】
🔥个人主页:杨利杰YJlio❄️个人专栏:《Sysinternals实战教程》《Windows PowerShell 实战》《WINDOWS教程》《IOS教程》《微信助手》《锤子助手》 《Python》 《Kali Linux》 《那些年未解决的Windows疑难杂症》🌟 让复杂的事情更…...
OpenClaw安全方案:Qwen3.5-9B本地化处理敏感图片数据
OpenClaw安全方案:Qwen3.5-9B本地化处理敏感图片数据 1. 为什么需要本地化处理敏感图片 去年我接手了一个财务单据自动归档项目,最初尝试使用某知名云OCR服务。当我把包含客户身份证号的发票扫描件上传到云端时,突然意识到一个严重问题&…...
借助智能工具,学术写作目录自动生成,内容精准优化,时间高效利用。
工具对比速览 工具名称 核心功能 处理速度 适用场景 特色优势 aibiye AI降重目录生成 20分钟 学术论文 知网/维普/格子达适配 aicheck AI检测目录优化 实时 初稿检查 多平台规则预判 askpaper 学术规范处理 15-30分钟 期刊投稿 保留专业术语 秒篇 一键式处…...
CP880显示驱动库:车规级TFT-LCD底层控制与零拷贝实现
1. CP880显示驱动库深度解析:面向CARIAD车载信息娱乐系统的TFT-LCD底层控制方案1.1 库定位与工程背景CP880是专为大众集团CARIAD软件平台定制的嵌入式图形显示驱动库,核心目标是为车载信息娱乐系统(IVI)提供高可靠性、低延迟的TFT…...
嵌入式系统中状态机的实现与优化技巧
1. 状态机在嵌入式系统中的核心价值在资源受限的嵌入式环境中,状态机(State Machine)是处理复杂逻辑的利器。我曾在智能家居控制器项目中,用状态机管理设备工作模式切换,代码量减少了40%而可靠性提升显著。状态机本质上…...
告别试用期焦虑:JetBrains IDE重置工具全面指南
告别试用期焦虑:JetBrains IDE重置工具全面指南 【免费下载链接】ide-eval-resetter 项目地址: https://gitcode.com/gh_mirrors/id/ide-eval-resetter 还在为JetBrains IDE试用期结束而烦恼吗?当你正沉浸在代码创作的高峰期,突然弹出…...
如何用 MutationObserver 监控第三方插件对 DOM 的篡改
使用MutationObserver监控第三方插件DOM篡改,需精准配置观察选项(childList、subtree、attributes、characterData),聚焦目标容器与可疑变更,安全修复防死循环,并兼顾兼容性与iframe等特殊场景。用 Mutatio…...
使用小龙虾来操作猿编程的遥控车沙
一、什么是 Q 饱和运算? 1. 核心痛点:普通运算的 “数值回绕” 普通算术运算(如 ADD/SUB)溢出时,数值会按补码规则 “回绕”,导致结果完全错误: 示例:int8_t 类型最大值 127 1 → 结…...
