6:arm condition code flags详细的讲解

目录

6.1 arm的 condition code flag 的详细讲解

6.1.1C

6.1.2Z

6.1.3N

6.1.4V


6.1 arm的 condition code flag 的详细讲解

在这篇文章中,我更加严格与严谨的讲解一下 arm的四个condition code flags,因为这个在汇编中还是非常重要的。

6.1.1C

在这个之中,C表示最后的结果有没有溢出,判断加法最后有没有进位,而减法有没有借位,如果是这样的,那么C将会成为1,否则C是0。

MOV R0, #0xFF     ; 将无符号最大值255 (0xFF)放入R0
ADD R0, R0, #1    ; 加1,结果变成256

0xFF是8bits中最大的值255,如果再加一,那么将会成为256就是会有9bits所以将会发生借位,所以答案C=1

再举一个例子


11010000+11110010 

那看看这个C咋样,首先得会计算这个玩意吧,加出来会成为111000010,所以这里有9bits了所以C=1

6.1.2Z

z代表的是zero flag这个还是很简单能理解的,就像我之前说的看他有没有作用,不能没有作用吧,这个就是看他是不是零,是零就是1,不是零就是0,同样也有例子

LDR R1, =0x80000000

LDR R2, =0xFFFFFFFF

ADDS R0, R1, R2

结果是0x7FFFFFFF,这可不是零啊,所以说这个Z=0,这个flag非常简单,因为就判断它是不是零就完事了。

6.1.3N

n flag是判断这个数字是不是负数的一个flag,这个也非常简单,但是这个是不是负数,再二进制的时候非常好判断,但是到十六进制就没有那么好判断。

举一个例子来说

还是这个,

11010000+11110010 ,答案上面也算出来了1 11000010,这个8bits,所以前面的那个就可以不要了(C=1),那么你看这个11000010最左边的是1,那么这个就是负数,那么这个N =1。

LDR R1, =0x40000000

LDR R2, =0x40000000

ADDS R0, R1, R2

那这个N是0还是1呢,其实这个加起来非常简单,答案是0x80000000,但是这个是正数还是负数呢?只能先转成2进制,那么这个将会非常麻烦,我们总结了一个规律。

正数:0x00000001--0x7FFFFFFF

负数:0x80000000--0xFFFFFFFF

当然还有一个0(既不是正数,也不是负数):0x00000000,

在flag的判断中是负数的为1,其他的就是0,所以在这里,0x80000000很抱歉并不是正数,是负数,所以N=1

6.1.4V

这个是这几个中比较难的一个flag,这个表示的是我最后运算好的值不能超过我2进制8bits中的补码范围。也就是[-2^7,2^7-1]这样一个范围。如果我超出了这个范围,那么V=1,不然的话就没啥事情了。所以在这里如果是一个负数与一个正数相加的话,其实100%V=0的,但是正数加正数与负数加负数就不一定了,因为一个很可能会超过最大值,一个很可能会小于最小值。这个时候其实转成十进制就能解决问题,同样我们也并不想转十进制,所以我这里还是总结了一个结论

  • 两数同为正,相加结果却变为负,说明溢出。
  • 两数同为负,相加结果却变为正,也说明溢出。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

其他节点使用kubectl访问集群,kubeconfig配置文件 详解

上述两种方式:可使用kubectl连接k8s集群。 $HOME/.kube/config 是config文件默认路径,要么直接定义环境变量,要么就直接把文件拷过去 config文件里面,定义了context,里面指定了用户和对应的集群信息: ku…

新世联科技:NG2-A-7在DAC空气捕集提取CO2的应用

一、DAC空气捕集提取CO2的介绍 直接空气碳捕获(Direct Air Capture,简称DAC)是一种直接从大气中提取二氧化碳的技术。 二、DAC空气捕集提取CO2的前景 从大气中提取的这种二氧化碳可以作为循环经济的一部分以各种不同方式使用。未来&#xf…

十四届蓝桥杯STEMA考试Python真题试卷第二套第五题

来源:十四届蓝桥杯STEMA考试Python真题试卷第二套编程第五题 本题属于迷宫类问题,适合用DFS算法解决,解析中给出了Python中 map() 和列表推导式的应用技巧。最后介绍了DFS算法的两种常见实现方式——递归实现、栈实现,应用场景——迷宫类问题、图的连通性、树的遍历、拓朴排…

js WebAPI黑马笔记(万字速通)

此笔记来自于黑马程序员,pink老师yyds 复习: splice() 方法用于添加或删除数组中的元素。 注意: 这种方法会改变原始数组。 删除数组: splice(起始位置, 删除的个数) 比如:1 let arr [red, green, b…

【C++】踏上C++学习之旅(五):auto、范围for以及nullptr的精彩时刻(C++11)

文章目录 前言1. auto关键字(C11)1.1 为什么要有auto关键字1.2 auto关键字的使用方式1.3 auto的使用细则1.4 auto不能推导的场景 2. 基于范围的for循环(C11)2.1 范围for的语法2.2 范围for的使用条件 3. 指针空值nullptr&#xff0…

【Spring】Spring的简单创建和使用

前言 Spring Bean 可以通过两种主要方式定义&#xff1a;基于 XML 配置文件和基于注解。今天我们讲解基于 XML 配置文件‌来定义 Bean &#xff0c;在 XML 配置文件中&#xff0c;使用 <bean> 元素定义 Bean&#xff0c;描述 Bean 的创建、配置和依赖关系&#xff0c;并存…

二次封装 el-pagination 组件存在的问题

在使用 Element Plus 组件时&#xff0c;有时会遇到组件不完全符合需求的情况&#xff0c;这时可能需要对其进行二次封装。在封装 Pagination 组件时&#xff0c;我们会发现一些属性和函数无法正常使用&#xff0c;下面将详细探讨这些问题&#xff0c;并提供一下思路和想法。 …

想唱就唱 2.15.63| 电视免VIP唱K软件,支持手机点歌

想唱就唱是一款实用性强的K歌软件&#xff0c;支持歌曲搜索、歌手搜索及排行榜。软件支持歌曲下载、点歌、插队&#xff0c;还支持手机扫码点歌&#xff0c;功能与KTV软件一致&#xff0c;让用户在家也能享受KTV体验。首次加载较慢&#xff0c;因采用先下载后播放方式。会员版已…

图文深入介绍Oracle DB link(一)

1. 引言&#xff1a; 本文图文深入介绍Oracle DB link&#xff0c;先介绍基本概念。 2.DB link的定义 数据库链接&#xff08;Database Link&#xff0c;简称 DB Link&#xff09;是 Oracle 数据库中的一个重要功能。它是一种在一个 Oracle 数据库实例中访问另一个 Oracle 数…

江协科技STM32学习- P34 I2C通信外设

&#x1f680;write in front&#x1f680; &#x1f50e;大家好&#xff0c;我是黄桃罐头&#xff0c;希望你看完之后&#xff0c;能对你有所帮助&#xff0c;不足请指正&#xff01;共同学习交流 &#x1f381;欢迎各位→点赞&#x1f44d; 收藏⭐️ 留言&#x1f4dd;​…

vxe-table 表格中实现多行文本的编辑

Vxe UI vue vxe-table 表格中实现多行文本的编辑 vxe-table v4.8 要在表格中使用多行文本编辑&#xff0c;可以通过设置行高方式&#xff0c;再设置 cell-config.verticalAlign: ‘top’ 单元格垂直对齐方式&#xff0c;实现顶部对齐&#xff0c;因为默认是居中对齐。 代码 …

Linux开发工具——make/Makefile

目录 一、什么是makefile&#xff1f; 二、为什么要有makefile&#xff1f; 三、makefile的使用 1.依赖关系与依赖方法 2.伪目标 3.定义变量 4.特殊符号 四、makefile的执行逻辑 一、什么是makefile&#xff1f; Makefile是一种自动化构建工具&#xff0c;make是一条指…

`掌握Python-PPTX,让PPt制作变得轻而易举!`

文章目录 掌握Python-PPTX&#xff0c;让PPT制作变得轻而易举&#xff01;背景介绍python-pptx 是什么&#xff1f;如何安装 python-pptx&#xff1f;简单库函数使用方法应用场景常见Bug及解决方案总结 掌握Python-PPTX&#xff0c;让PPT制作变得轻而易举&#xff01; 背景介绍…

uniapp vue3 使用echarts-gl 绘画3d图表

我自己翻遍了网上&#xff0c;以及插件市场&#xff0c;其实并没有uniapp 上使用echarts-gl的样例&#xff0c;大多数都是使用插件市场的echarts的插件 开始自己尝试直接用echartsgl 没有成功&#xff0c;后来尝试使用threejs 但是也遇到一些问题&#xff0c;最后我看官网的时…

windows运行ffmpeg的脚本报错:av_ts2str、av_ts2timestr、av_err2str => E0029 C4576

问题描述 我目前的环境是&#xff1a; 编辑器&#xff1a; Microsoft Visual Studio Community 2022 (64 位) 运行的脚本是ffmpeg自带的remux样例&#xff0c;只不过我想用c语言执行这个样例。在执行的过程中报错如下图&#xff1a; C4576 后跟初始值设定项列表的带圆括…

Moore Perf System 1.1版本

Moore Perf System&#xff08;一款性能分析工具&#xff09; 提供可视化界面&#xff0c;在时间轴上按时间顺序显示 CPU 和 GPU 的事件、吞吐和性能指标&#xff0c;帮助开发人员方便、快速、准确的定位到系统级别的性能瓶颈&#xff0c;进而进行针对性分析和优化&#xff0c;…

『VUE』19. scope避免组件之间样式互相覆盖(详细图文注释)

目录 使用多个组件带有样式分析如何避免css覆盖总结 欢迎关注 『VUE』 专栏&#xff0c;持续更新中 欢迎关注 『VUE』 专栏&#xff0c;持续更新中 使用多个组件带有样式 ComPonent1.vue <template><h3>ComPonent1.vue</h3> </template><script&g…

数据结构 C/C++(实验二:栈)

&#xff08;大家好&#xff0c;今天分享的是数据结构的相关知识&#xff0c;大家可以在评论区进行互动答疑哦~加油&#xff01;&#x1f495;&#xff09; 目录 提要&#xff1a;实验题目 一、实验目的 二、实验内容及要求 三、算法思想 实验1 实验2 四、源程序及注释…

软考背诵笔记

计算机硬件组成 运算器&#xff0c;控制器&#xff0c;存储器&#xff0c;输入设备&#xff0c;输出设备 中央处理单元&#xff08;CPU&#xff09; 控制器组成 指令寄存器&#xff08;IR&#xff09;:暂存cpu执行指令 程序计数器&#xff08;PC&#xff09;:存放下一条执…

面试问答-1

目录 1、线程和进程的概念&#xff0c;区别、以及什么时候用线程什么时候用进程 1.1 概念 1.2 区别 1.3 选择 2、TCP/IP分几层&#xff0c;每层的核心任务是什么 1.tcp/ip模型 tcp&#xff1a; udp&#xff1a; tcp、udp的区别 tcp/udp的连接过程&#xff1a; 3、htt…