当前位置: 首页 > news >正文

ARM base instruction -- ccmp (immediate)

Conditional Compare (immediate) sets the value of the condition flags to the result of the comparison of a register value and an immediate value if the condition is TRUE, and an immediate value otherwise.

此指令一般出现在 cmp 指令之后,表示双重比较。

条件比较(立即数)将条件标志的值设置为寄存器值和立即数(如果条件为真)的比较结果,否则把条件标志设置为#<nzcv>的值。


<nzcv> = 1 1 1 1
n = 0x8
z = 0x4
c = 0x2
v = 0x1

32-bit variant

    Applies when sf == 0.
    CCMP <Wn>, #<imm>, #<nzcv>, <cond>

64-bit variant

    Applies when sf == 1.
    CCMP <Xn>, #<imm>, #<nzcv>, <cond>

Decode for all variants of this encoding

    integer n = UInt(Rn);
    integer datasize = if sf == '1' then 64 else 32;
    bits(4) flags = nzcv;
    bits(datasize) imm = ZeroExtend(imm5, datasize);

    bits(N) ZeroExtend(bits(M) x, integer N)
     assert N >= M;
     return Zeros(N-M) : x;

    bits(N) Zeros(integer N)
     return Replicate('0',N);

    bits(N) Replicate(bits(M) x)
     assert N MOD M == 0;
     return Replicate(x, N DIV M);


Operation

    bits(datasize) operand1 = X[n];
    bits(datasize) operand2;

    if ConditionHolds(cond) then
     operand2 = NOT(imm);
     (-, flags) = AddWithCarry(operand1, operand2, '1');
    PSTATE.<N,Z,C,V> = flags;

    (bits(N), bits(4)) AddWithCarry(bits(N) x, bits(N) y, bit carry_in)
         integer unsigned_sum = UInt(x) + UInt(y) + UInt(carry_in);
         integer signed_sum = SInt(x) + SInt(y) + UInt(carry_in);
         bits(N) result = unsigned_sum<N-1:0>; // same value as signed_sum<N-1:0>
         bit n = result<N-1>;
         bit z = if IsZero(result) then '1' else '0';
         bit c = if UInt(result) == unsigned_sum then '0' else '1';
         bit v = if SInt(result) == signed_sum then '0' else '1';
         return (result, n:z:c:v);

ccmp    x19, #0x0, #0x4, ne     # 判断 x19 是否等于 0 ,如果不等于(ne)零,z标志位为0;如果等于(eq)零,把标志位设置0x4。

  4034f4:    f9405a94     ldr    x20, [x20, #176]    // x20=walk_b->children
  4034f8:    f9405a73     ldr    x19, [x19, #176]    // x19=walk_a->children
  4034fc:    f100029f     cmp    x20, #0x0           // x20=walk_b ? 0
  403500:    fa401a64     ccmp    x19, #0x0, #0x4, ne  // x19=walk_a, 如果x19=0,ccmp会设置标志位0x4, b.eq将会跳转
  403504:    54000140     b.eq    40352c <ferror@plt+0x164c>  // b.none
    for (walk_a = a->children, walk_b = b->children; walk_a && walk_b;
         walk_a = walk_a->next, walk_b = walk_b->next) {

#<nzcv>:

ARM Process state -- CPSR

ARM Process state -- PSTATE

ARM base instruction -- ccmp (register)

相关文章:

ARM base instruction -- ccmp (immediate)

Conditional Compare (immediate) sets the value of the condition flags to the result of the comparison of a register value and an immediate value if the condition is TRUE, and an immediate value otherwise. 此指令一般出现在 cmp 指令之后&#xff0c;表示双重比…...

高德 阿里231滑块 分析

声明: 本文章中所有内容仅供学习交流使用&#xff0c;不用于其他任何目的&#xff0c;抓包内容、敏感网址、数据接口等均已做脱敏处理&#xff0c;严禁用于商业用途和非法用途&#xff0c;否则由此产生的一切后果均与作者无关&#xff01; 有相关问题请第一时间头像私信联系我删…...

Unity 的 WebGL 构建中资源图片访问方式

在 Unity 的 WebGL 构建中&#xff0c;资源图片是可以打包在 工程内部 使用的&#xff0c;前提是这些资源被正确地包含在构建中&#xff0c;并且能够通过合适的方式加载和访问。不同于传统的本地文件访问&#xff0c;WebGL 需要通过 Asset Bundles、Addressables 或 Resources …...

WinForms 中使用 MVVM 模式构建应用:实现登录页面、页面导航及 SQLite 数据库连接完整框架搭建过程

前言 在传统的 WinForms 应用程序开发中&#xff0c;很多开发者使用事件驱动的设计模式&#xff0c;直接将业务逻辑编写在界面代码中。然而&#xff0c;随着应用程序的复杂性增加&#xff0c;单一的界面文件变得臃肿&#xff0c;难以测试和维护。借鉴 WPF 中 MVVM&#xff08;…...

Chrome调试工具(查看CSS属性)

来说说这个Chrome调试工具吧&#xff0c;梦回gdb&#xff0c;但是它没有gdb难 打开浏览器 有两种方式可以直接打开Chrome调试工具 直接按F12 鼠标右键页面 --- 检查元素 什么mc玩家是鸣潮 标签页含义 &#x1f912; elements查看标签结构&#xff08;展示html文件&#…...

MQTT从入门到精通之MQTT入门

MQTT入门 1 MQTT概述 1.1 MQTT简介 MQTT&#xff08;Message Queuing Telemetry Transport&#xff09;由IBM于1999年开发的一种基于**"发布订阅模式"的轻量级的消息传输协议**&#xff01; 发布订阅模式是一种传统的客户端-服务器架构的替代方案&#xff0c;因为…...

Hadoop生态系统主要包括哪些组件以及它们的作用

Hadoop生态系统是一个开源的大数据处理框架&#xff0c;它主要由一系列组件构成&#xff0c;每个组件都承担着不同的功能和作用。以下是Hadoop生态系统的主要组件及其作用的详细解释&#xff1a; HDFS&#xff08;Hadoop Distributed File System&#xff09; 作用&#xff1a…...

OpenResty 1.27.1.1 已经正式发布

OpenResty 1.27.1.1 已经正式发布&#xff0c;这是一个基于 NGINX 和 LuaJIT 的 web 平台。以下是关于此次发布的一些重点信息和更新内容&#xff1a; 下载与安装 你可以在此处下载最新版本的 OpenResty。提供了便携式源代码分发、Win32/Win64 二进制分发以及为 Ubuntu、Debi…...

定高虚拟列表:让大数据渲染变得轻松

定高虚拟列表 基本认识 在数据如潮水般涌来的今天&#xff0c;如何高效地展示和管理这些数据成为了开发者们面临的一大挑战&#xff0c;传统的列表渲染方式在处理大量数据时&#xff0c;往往会导致页面卡顿、滚动不流畅等问题&#xff0c;严重影响用户体验&#xff08;在页面…...

python request与grequests该如何选择

requests & grequests requests 和 grequests 是Python中用于发送HTTP请求的不同库。requests 是一个同步、阻塞式库&#xff0c;而 grequests 是基于 requests 封装的异步非阻塞库&#xff0c;它利用了 gevent 库提供的协程机制&#xff0c;能够并发发送多个请求。 选择…...

Unity3D UI 拖拽

Unity3D 实现 UI 元素拖拽功能。 UI 拖拽 通常画布上的 UI 元素都是固定位置的&#xff0c;我们可以通过实现拖拽接口&#xff0c;让 UI 元素可以被拖拽到其他位置。 拖拽接口 创建一个脚本 UIDrag.cs&#xff0c;在默认继承的 MonoBehaviour 后面&#xff0c;再继承三个接…...

介绍一下memcpy(c基础)

memcpy函数void *memcpy(void *dest, const void *src, size_t n); dest&#xff1a;指向目标内存区域的指针&#xff0c;即复制的目的地。src&#xff1a;指向源内存区域的指针&#xff0c;即要被复制的内容的来源。n&#xff1a;要复制的字节数 主要功能是将src所指向的内存…...

【网络面试篇】HTTP(2)(笔记)——http、https、http1.1、http2.0

目录 一、相关面试题 1. HTTP 与 HTTPS 有哪些区别&#xff1f; 2. HTTPS 的工作原理&#xff1f;&#xff08;https 是怎么建立连接的&#xff09; &#xff08;1&#xff09;ClientHello &#xff08;2&#xff09;SeverHello &#xff08;3&#xff09;客户端回应 &a…...

python-23-一篇文章帮你理解Python推导式

python-23-一篇文章帮你理解Python推导式 一.简介 在 Python 中&#xff0c;推导式&#xff08;Comprehensions&#xff09;是一个简洁的语法&#xff0c;用于通过某种可迭代对象快速生成新的对象&#xff08;如列表、字典、集合等&#xff01;来开始我们今天的日拱一卒&…...

WPF中如何简单的使用CommunityToolkit.Mvvm创建一个项目并进行 增删改查

目录 开始前准备的数据库dbblog如下&#xff1a; 第一步&#xff1a;创建项目后下载四个NuGet程序包 第二步&#xff1a;删除原本的MainWindow.XAML文件 并创建如下的目录结构 然后在View文件夹下面创建Login.XAML和Main.XAML 并且在App.XAML中将启动项改为Login.X…...

CesiumJS 案例 P15:检测标记、鼠标点击移动标记、鼠标拖动标记

CesiumJS CesiumJS API&#xff1a;https://cesium.com/learn/cesiumjs/ref-doc/index.html CesiumJS 是一个开源的 JavaScript 库&#xff0c;它用于在网页中创建和控制 3D 地球仪&#xff08;地图&#xff09; 一、检测标记 <!DOCTYPE html> <html lang"en&…...

Webserver(4.9)本地套接字的通信

目录 本地套接字 本地套接字 TCP\UDP实现不同主机、网络通信 本地套接字实现本地的进程间的通信&#xff0c;类似的&#xff0c;一般采用TCP的通信流程 生成套接字文件 #include<arpa/inet.h> #include<stdio.h> #include<stdlib.h> #include<unistd.h&…...

[IAA系列] Image Aesthetic Assessment

Preface 本文旨在记录个人结合AI工具对IAA这个领域的一些了解&#xff0c;主要是通过论文阅读的方式加深对领域的了解。有什么问题&#xff0c;欢迎在评论区提出并讨论。 什么是IAA Image Aesthetic Assessment&#xff08;图像美学评估&#xff09;是一种评估图像在视觉上的…...

基于springboot的高校科研管理系统(源码+调试+LW)

项目描述 临近学期结束&#xff0c;还是毕业设计&#xff0c;你还在做java程序网络编程&#xff0c;期末作业&#xff0c;老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等。这里根据你想解决的问题&#xff0c;今天给…...

Flutter环境配置

配置环境变量 PUB_HOSTED_URLhttps://pub.flutter-io.cn FLUTTER_STORAGE_BASE_URLhttps://storage.flutter-io.cn 这个命令是用来配置 Flutter 的镜像源地址&#xff0c;主要是为了解决在中国大陆地区访问 Flutter 官方资源较慢的问题 具体的操作做如下: 右键点击"此…...

基于偏振无关的传输相位调控技术,实现可见光超透镜的优化设计

基于传输相位的可见光超透镜 偏振无关搞过光学设计的工程师都知道&#xff0c;传统透镜那个笨重的曲面有多让人头疼。现在有了一种黑科技——可见光波段的超透镜&#xff0c;厚度只有几百纳米&#xff0c;却能实现传统透镜的光学效果。关键是这玩意儿还搞定了偏振相关性这个老大…...

ArduinoFritzApi:嵌入式设备对接FRITZ!Box的TR-064协议实践

1. ArduinoFritzApi 库深度解析&#xff1a;面向嵌入式系统的 FRITZ!Box 自动化控制实践指南1.1 库定位与工程价值ArduinoFritzApi 是一个专为嵌入式平台设计的轻量级 C 库&#xff0c;其核心目标是实现对 AVM 公司全系智能家庭设备&#xff08;FRITZ!Box 路由器、FRITZ!DECT 插…...

逆向实战:用Smali语法修改APK逻辑,实现一个简单的功能破解(附工具与源码)

逆向工程实战&#xff1a;用Smali语法解锁APK功能的全流程指南 在Android逆向工程领域&#xff0c;掌握Smali语法就像获得了一把打开APK内部逻辑的万能钥匙。不同于那些停留在理论层面的教程&#xff0c;本文将带你深入一个真实的逆向场景——如何通过修改Smali代码来解锁某个演…...

Freeswitch实战指南:核心命令与变量操作全解析

1. Freeswitch核心命令实战解析 第一次接触Freeswitch时&#xff0c;面对密密麻麻的命令行界面&#xff0c;我完全不知道从何下手。经过几个项目的实战积累&#xff0c;我发现掌握几个核心命令就能解决80%的日常需求。下面这些命令都是我踩过无数坑后总结出来的精华&#xff0c…...

AI内容创作自动化了99%,为什么每天还是要手动7-8小时?因为大多数人把“判断层”彻底想反了

你有没有这种感觉&#xff1f;刷到一条深度视频——量子力学、斯多葛、佛学、红楼梦、AI前沿全混在一起讲得头头是道&#xff0c;弹幕刷屏“这是AI写的吧&#xff1f;” 结果博主本人站出来说&#xff1a;我已经败给AI了&#xff0c;我服了。 粉丝以为这是全AI流水线&#xff0…...

Java函数计算部署实战:从本地调试到生产环境上线的7个关键步骤(含阿里云/华为云/AWS对比)

第一章&#xff1a;Java函数计算部署全景概览Java函数计算是云原生场景下轻量级、事件驱动型服务的重要实现方式。它将传统Java应用的部署范式从虚拟机/容器迁移至按需执行、自动扩缩的无服务器架构&#xff0c;显著降低运维复杂度与资源闲置成本。开发者只需聚焦业务逻辑&…...

Jetson Orin R36.4.4内核编译与设备树定制实战:从.config修改到DTB生成

Jetson Orin R36.4.4内核编译与设备树定制实战&#xff1a;从.config修改到DTB生成 在嵌入式开发领域&#xff0c;Jetson Orin系列以其强大的AI算力和灵活的扩展性成为边缘计算的热门选择。但当我们需要连接特定传感器或外设时&#xff0c;标准系统镜像往往无法满足需求——这正…...

基于Qt框架的PC端学生信息管理系统设计与实现

1. 为什么选择Qt开发学生信息管理系统&#xff1f; 第一次接触学生信息管理系统开发时&#xff0c;我尝试过用Java Swing、Python Tkinter等多种GUI框架&#xff0c;最后发现Qt才是真正的"生产力工具"。Qt的信号槽机制让界面交互变得异常简单&#xff0c;跨平台特性又…...

微信自动化全攻略:从零基础到企业级部署的3大场景与7个避坑指南

微信自动化全攻略&#xff1a;从零基础到企业级部署的3大场景与7个避坑指南 【免费下载链接】puppet-wechat Wechaty Puppet Provider for WeChat 项目地址: https://gitcode.com/gh_mirrors/pu/puppet-wechat 在数字化办公与智能交互日益普及的今天&#xff0c;微信作为…...

基于卷积神经网络的人体动作跟踪研究

前言在儿童自闭症的早期诊断工作中&#xff0c;客观且精准的诊断方法具有重要意义。传统诊断手段依赖主观观察和量表评估&#xff0c;存在主观性强、周期长等局限。本研究聚焦于运用卷积神经网络 开展人体动作跟踪&#xff0c;以助力自闭症儿童的诊断。借助 Pycharm 平台&#…...