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的,但是正数加正数与负数加负数就不一定了,因为一个很可能会超过最大值,一个很可能会小于最小值。这个时候其实转成十进制就能解决问题,同样我们也并不想转十进制,所以我这里还是总结了一个结论

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

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

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

相关文章

scala学习记录,Set,Map

set:集合,表示没有重复元素的集合,特点:唯一 语法格式:val 变量名 Set [类型](元素1,元素2...) 可变不可变 可变(mutable)可对元素进行添加,删…

Linux权限解析:用户、组和权限的协同

​​​​​​​在Linux系统中,权限决定了谁能做什么。本文将指导你如何掌握这些权限,以确保你的系统既安全又高效! 目录 1.shell命令及其运行原理 2.Linu权限的概念 (1) 用户 (2) 切换用户命令su (3) 指令提权命令sudo (4) 什么是权限…

Centos Linux 7 搭建邮件服务器(postfix + dovecot)

准备工作 1. 一台公网服务器(需要不被服务商限制发件收件的,也就是端口25、110、143、465、587、993、995不被限制),如有防火墙或安全组需要把这些端口开放 2. 一个域名,最好是com cn org的一级域名 3. 域名备案&am…

Python绘制完整正弦余弦函数曲线

1,将正弦函数,余弦函数及坐标轴绘制在同一个界面方便对比观察,不同函数的曲线变化 import turtle # 导入turtle图形库,用于绘图 import math # 导入math库,用于数学计算,如三角函数# 设置绘图窗口 scre…

TON链上的代币开发与小程序开发:模式与要求

TON(The Open Network)链是由Telegram团队开发的区块链网络,旨在提供更快、更高效、更去中心化的基础设施,支持智能合约、去中心化应用(DApp)以及多种数字资产和代币的创建。随着TON链生态的不断成熟&#…

CTF中的phar反序列化 [SWPU 2018]SimplePHP

以[SWPU 2018]SimplePHP 这道题为例 页面可以查看文件和上传文件 点击查看文件,发现url变成/file.php?file 猜测可能存在文件包含,可以读取文件 尝试读取index.php文件 回显了源码 再读取base.php 只看最后有信息的代码: <!--flag is in f1ag.php--> 提示flag在f1…

图文并茂java源码解析-HashMap

文章目录 HashMap结构HashMap的Entry了解的哈希冲突解决方法有哪些?HashMap是线程安全的吗?hashmap的put过程介绍一下jdk8的获取hash的方法jdk8的获取索引的方法 hashmap的put过程介绍一下hashmap 调用get方法一定安全吗?HashMap一般用什么做Key?为啥String适合做Key呢?为…

【JavaEE】认识进程

一、操作系统&#xff08;operating system&#xff09; 操作系统是一组做计算机资源管理的软件的统称&#xff0c;它能够把一个计算机上的所有硬件资源和软件资源都管理好&#xff1a;能够管理好各种硬件资源&#xff0c;让他们很好的相互配合&#xff0c;能够管理好各种软件…

Android——横屏竖屏

系统配置变更的处理机制 为了避免横竖屏切换时重新加载界面的情况&#xff0c;Android设计了一中配置变更机制&#xff0c;在指定的环境配置发生变更之时&#xff0c;无需重启活动页面&#xff0c;只需执行特定的变更行为。该机制的视线过程分为两步&#xff1a; 修改 Androi…

基于卷积神经网络(CNN)的时间序列预测,15个输入1个输出,可以更改数据集,MATLAB代码

1. 数据收集与预处理 数据清洗&#xff1a;处理缺失值、异常值等。特征工程&#xff1a;提取有助于预测的特征。数据标准化&#xff1a;将时间序列数据标准化&#xff0c;使其具有零均值和单位方差&#xff0c;有助于模型训练。滑动窗口划分&#xff1a;将时间序列数据划分为多…

css 文字一行没有放满不进行换行

在开发过程中&#xff0c;经常会出现一行的文字没有放满 就出现了换行的情况 word-break: break-all;

社区团购 2.0 版本发展与创新模式研究:融合新元素的机遇与挑战

摘要&#xff1a;本文深入探讨了社区团购 2.0 版本的发展模式&#xff0c;以便利连锁店为核心的新形态对传统社区团购的冲击和革新。同时&#xff0c;分析了山东小爱联盟推动的爱客优选模式特点&#xff0c;包括佣金体系、运营模式等。在此基础上&#xff0c;研究如何将开源 AI…

isaac sim 14 物理学习(车辆动力学)

文章内容均来自博客文章、官方文档手册等 参考内容 Nvidia Isaac Sim代码编程 入门教程 2024&#xff08;7&#xff09;_isaac sim franka-CSDN博客 Python Bindings API — omni_physics 106.1 documentation Physics — Omniverse IsaacSim latest documentation Vehicle…

理解Laravel中的pipeline

pipeline在laravel的启动过程中出现次数很多&#xff0c;要了解laravel的启动过程和生命周期&#xff0c;理解pipeline就是其中的一个关键点。网上对pipeline的讲解很少&#xff0c;所以我自己写一写吧。 首先还是来看看调用栈&#xff0c;也就是从一个请求开始到返回响应&…

基于uniapp和java的电动车智能充电系统软件平台的设计

文章目录 项目介绍具体实现截图技术介绍mvc设计模式小程序框架以及目录结构介绍错误处理和异常处理java类核心代码部分展示详细视频演示源码获取 项目介绍 对电动车智能充电系统进行设计和开发。通过使用本系统可有效地减少运营成本&#xff0c;提高管理效率。 根据近年来社会…

使用css和html制作导航栏

代码 <!DOCTYPE html> <html><head><meta charset"utf-8"><title></title><style>*{margin: 0;padding: 0;}#m{background-color: antiquewhite;width: 100%;height: 50px;}#i{float: left;width: 100px;height: 50px;li…

怎样使用pycharm的服务?

‌在PyCharm中使用服务器的步骤如下‌&#xff1a; ‌打开PyCharm&#xff0c;选择“File”->“Settings”‌。‌选择左侧工具栏中的“Project:…”‌&#xff0c;然后选择“Python Interpreter”。‌点击右上角的“Add Interpreter”‌&#xff0c;选择“On SSH”。‌如果…

CI_CD

什么是CI/CD 在前端开发中&#xff0c;CI/CD 是 Continuous Integration&#xff08;持续集成&#xff09;和 Continuous Deployment/Continuous Delivery&#xff08;持续部署/持续交付&#xff09;的简称。它是一种软件开发实践&#xff0c;自动化了应用的构建、测试和发布过…

设置JAVA以适配华为2288HV2服务器的KVM控制台

华为2288HV2服务器比较老旧了&#xff0c;其管理控制台登录java配置比较麻烦&#xff0c;华为的ibmc_kvm_client_windows客户端测试了几个版本&#xff0c;连接控制台也有问题&#xff0c;最终安装JDK解决。 一、测试环境 主机为WindowsServer2012R2,64位系统 二、Java软件包…

机器学习—构建一个神经网络

如何在Tensorflow中构建神经网络&#xff1f; 回到之前的例子&#xff0c;如果你想做钱进支柱&#xff0c;初始化数据x创建第一层&#xff0c;如下图所示计算一个1&#xff0c;然后创建第二层并计算一个2&#xff0c;所以这是一种明确的向前推进的方式。 事实证明&#xff0c;…