32位处理器中,通过汇编指令实现64位数据的加减运算

news2024/10/3 4:41:24

32位处理器一次可以处理的数据是32bit,但如果是64bit的数据,依然可以运算,只是不能一步到位。下面以加法为例


        目录

1、基本思路

2、具体实现

(1) 将数据保存到寄存器

(2) 低32位相加

(3) 高32位相加

3、完整汇编代码


1、基本思路

一个64bit的数据可以分为高32位和低32位,在运算时,

  • 先让低32位相加减(使用ADDS / SUBS指令来记录进位状态) 
  • 然后让高32位相加减(使用ADC / SBC指令,在运算时会考虑进位状态)

2、具体实现

假设两个64bit的数据A和数据B分别是 

  • 0x00000001FFFFFFFF =》拆成两部分就是 0x000000010xFFFFFFFF
  • 0x0000000200000005 =》拆成两部分就是 0x000000020x00000005

(1) 将数据保存到寄存器

数据A:

低32位 0xFFFFFFFF 保存到R1寄存器,高32位 0x00000001 保存到 R2寄存器

数据B:

低32位 0x00000005 保存到R3寄存器,高32位 0x00000002保存到 R4寄存器

MOV R1, #0xFFFFFFFF    @ 数据A的低32位
MOV R2, #0x00000001
MOV R3, #0x00000005    @ 数据B的低32位
MOV R4, #0x00000002

(2) 低32位相加

先让低32位相加,这时需要使用ADDS指令来记录进位状态,使用ADD不会影响到CPSR寄存器的状态位,也就不会记录进位状态。

ADDS R5, R1, R3    @ 将低32位运算结果保存到R5寄存器

(3) 高32位相加

再让高32位相加,因为需要考虑来自低位的进位,应该使用ADC指令

ADC R6, R2, R4    @ 将高32位运算结果保存到R6寄存器

3、完整汇编代码

MOV R1, #0xFFFFFFFF    
MOV R2, #0x00000001
MOV R3, #0x00000005
MOV R4, #0x00000002
	
ADDS R5, R1, R3        @ 低32位相加(记录进位状态)
ADC R6, R2, R4         @ 高32位相加(考虑进位状态)

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ODN 2006丨艾美捷CpG ODN系列说明书

艾美捷CpG ODN系列——ODN 2006:具有硫代磷酸酯骨架的CpG寡脱氧核苷酸(B型)。人和小鼠TLR9(Toll样受体9)的特异性配体。 艾美捷CpG ODN 丨ODN 2006化学性质: 序列:5-tcgtcttttgtcgttttgtgtcgtt…

非零基础自学Golang 第8章 包管理 8.8 Go语言命名规范 8.9 小结 8.10 知识拓展

非零基础自学Golang 文章目录非零基础自学Golang第8章 包管理8.8 Go语言命名规范8.8.1 驼峰式命名法8.8.2 导出标识符8.9 小结8.10 知识拓展8.10.1 标准包简介第8章 包管理 8.8 Go语言命名规范 对于Go语言命名规范,每一家公司根据自己的实际情况可能都有不同。 一…

仅仅上线一小时,下载量就破10W!阿里内部Java性能优化实战手册

当时看完这(Java程序性能优化实战)的时候,感到首先就Java的方方面面讲得比较全,但是不乱。而且每个点都讲得比较清楚,读下来也没有什么盲点。干货非常多。国内少有的能写得这么好的。我看了收获很多。所以这会推荐给朋…

HCIP-Cloud+Service+DevOps+Engineer+V2.0第一章华为端到端 DevOps 概览

HCIP-CloudServiceDevOpsEngineerV2.0第一章华为端到端 DevOps 概览 学习总结,思维导图整理,免费分享。侵权删除 本博文为HCIP-Cloud Service DevOps Engineer V2.0培训系列内容,[完整学习路径](https://education.huaweicloud.com/programs…

M.2、PCIe 和 NVMe 的定义和区别

资料来源:维基百科,电商平台等 文章目录结论M.2PCIeNVMe结论 基于阅读的资料,对三者之间的关系,总结为如下层次结构: M.2 M.2定义了计算机内部扩展卡的外观尺寸和电气接口规范。 外观尺寸: M.2模块的外…

艾美捷西妥昔单抗Cetuximab方案及相关研究

西妥昔单抗Cetuximab属于嵌合型IgG1单克隆抗体,分子靶点为表皮生长因子受体(EGFR)。EGFR信号途径参与控制细胞的存活,增殖、血管生成、细胞运动、细胞的入侵及转移等。 本品可以以高出内源配体约5到10倍的亲和力与EGFR特异结合&am…

BellmanFord算法与SPFA算法

​​​​​​ BellmanFord算法与SPFA算法 展开 Bellman-Ford Bellman-Ford 算法是一种用于计算带权有向图中单源最短路径(SSSP:Single-Source Shortest Path)的算法。该算法由 Richard Bellman 和 Lester Ford 分别发表于 1958 年和 1956 年…

nodejs+vue校园用车辆校车管理系统

本项目的应用场景描述如下:为减少学生等待校车的时间,合理安排校车调度,设计并开发一个校车预约系统,系统由手机端、服务器端、车载刷卡端三部分组成。学生通过手机应用(或微信应用)查看校车运行时段&#…

webpack系列之webpack打包图片多生成空白图片且图片不能正常加载的解决方式

文章の目录参考写在最后我用的是webpack的V5.75.0版本,下面是正确的配置方法 module.exports {...// 所有第三方文件模块的匹配规则module: {rules: [{test: /\.jpg|png|gif|bmp|ttf|eot|svg|woff|woff2$/,use: {loader: "url-loader",options: {limit:…

【火热报名中】2022“博客之星”年度总评选重磅启动!

技术人看过来~~2022 这一年,我们遇见了太多的曲折和磨砺,但大家依然保持初心、砥砺向前,用技术人的拳拳之心,抵挡来自时代浪潮的冲击与挑战。为嘉奖勤勉了一年的技术人,也为这一年的种种努力画上圆满的句号&#xff0c…

线性代数之行列式

矩阵的行列式,determinate(简称det),是基于矩阵所包含的行列数据计算得到的一个标量。是为求解线性方程组而引入的。 1 行列式的定义 1.1 二阶行列式 对于二阶线性方程组 若b1b2都为0,则称齐次线性方程组,否…

Flutter - PageView(1) 基本用法

如果要实现页面切换和 Tab 布局,我们可以使用 PageView 组件。需要注意,PageView 是一个非常重要的组件,因为在移动端开发中很常用,比如大多数 App 都包含 Tab 换页效果、图片轮动以及抖音上下滑页切换视频功能等等,这…

【10秒在圣诞节做出温馨的圣诞树】

🤵‍♂️ 个人主页老虎也淘气 个人主页 ✍🏻作者简介:Python学习者 🐋 希望大家多多支持我们一起进步!😄 如果文章对你有帮助的话, 欢迎评论 💬点赞👍🏻 收藏…

1年就晋升了3级,全靠这份阿里大牛赠送的这份堪称神级架构师手册

又逢“金九银十”,年轻的毕业生们满怀希望与忐忑,去寻找、竞争一个工作机会。已经在职的开发同学,也想通过社会招聘或者内推的时机争取到更好的待遇、更大的平台。 然而,面试人群众多,技术市场却相对冷淡,…

spring教程

spring 1.spring ioc ​ IoC 是 Inversion of Control 的简写,译为“控制反转”,它不是一门技术,而是一种设计思想,是一个重要的面向对象编程法则,能够指导我们如何设计出松耦合、更优良的程序。 ​ Spring 通过 Io…

[附源码]Python计算机毕业设计Django葡萄酒销售管理系统论文

项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等等。 环境需要 1.运行环境:最好是python3.7.7,…

明道云与智齿科技共推个性化CRM+呼叫中心联合方案

背景介绍 近来,B2B企业用人及获客成本居高不下的问题愈发显现,企业为提高核心竞争力,利用信息技术协调企业与客户在销售、营销和服务上的交互,在优化管理方式的同时,向客户提供个性化交互服务,以达到吸引新…

[激光原理与应用-59]:激光器 - 光学 - 脉冲激光器的参数解析(能量、脉冲、周期、功率)

目录 第1章 光波的基本参数 1.1 光速 1.2 波长与频率 1.3 频率 1.4 电磁波光谱 1.5 光波的能量 第2章 脉冲激光器的参数 2.1 脉冲 2.2 脉冲宽度:单个脉冲作用时间。 2.3 脉冲周期/重复频率 2.4 单脉冲能量 它山之石: 1、激光重复频率&#…

python+Eclipse+pydev环境搭建

本文重点介绍使用Eclipsepydev插件来写Python代码, 以及在Mac上配置EclipsePydev 和Windows配置EclipsePydev 编辑器:Python 自带的 IDLE 简单快捷, 学习Python或者编写小型软件的时候。非常有用。 编辑器: Eclipse pydev插件 1. Eclips…

【我不熟悉的javascript】字符串正则表达式的使用match和matchAll方法

String.prototype.match() match() 方法检索返回一个字符串匹配正则表达式的结果。 参数必须是一个正则表达式如果使用 g 标志,则将返回与完整正则表达式匹配的所有结果,但不会返回捕获组。如果未使用 g 标志,则仅返回第一个完整匹配及其相关…