Disassembly窗口信息解读

news2024/9/20 9:40:30

如上图程序所示,程序运行流程为:

1.跳转至main所在地址

2.加载全局变量counter地址??main_2到R0

3.将变量值存入R0

4.R0自增指令载入

5.加载counter地址到R1

6.通过R1的地址,R0取到counter的值

??main_1最终结果R0存值,R1存地址。

《深入理解计算机系统》中写道:

大多数指令有一个或多个操作数(operand),指示出执行一个操作中要使用的源数据值,以及放置结果的目的位置。x86-64 支持多种操作数格式(参见图 3-3)。源数据值可以以常数形式给出,或是从寄存器或内存中读出。结果可以存放在寄存器或内存中。因此,各种不同的操作数的可能性被分为三种类型。

  • 第一种类型是立即数(immediate),用来表示常数值。在 ATT 格式的汇编代码中,立即数的书写方式是 ‘$’ 后面跟一个用标准 C 表示法表示的整数,比如,$-577 或 $0x1F。不同的指令允许的立即数值范围不同,汇编器会自动选择最紧凑的方式进行数值编码。

  • 第二种类型是寄存器(register),它表示某个寄存器的内容,16 个寄存器的低位 1 字节、2 字节、4 字节或 8 字节中的一个作为操作数,这些字节数分别对应于 8 位、16 位、32 位或 64 位。在图 3-3 中,我们用符号 rara​ 来表示任意寄存器 a,用引用R[ra]R[ra​]来表示它的值,这是将寄存器集合看成一个数组 R,用寄存器标识符作为索引。

  • 第三类操作数是内存引用,它会根据计算出来的地址(通常称为有效地址)访问某个内存位置。因为将内存看成一个很大的字节数组,我们用符号Mb[Addr]Mb​[Addr]表示对存储在内存中从地址 Addr 开始的 b 个字节值的引用。为了简便,我们通常省去下标 b。

        可以观察到程序运行和指令加载有差异,ARM处理器访问内存时,内存只能由特殊的加载指令读取,数据操作只发生在寄存器。如图所示,处理while(counter<21)时,我们是先运行判断,再运行自增。但是指令的加载,是先加载了自增指令,再进行判断的。

        ARM架构单片机采用RISC,RISC(Reduced Instruction Set Computer)是精简指令集计算机,它是一种计算机架构,旨在通过减少指令集的复杂性来提高计算机的性能和效率。RISC架构使用一组简单的指令,每条指令完成一个简单的操作,这些指令的执行时间相对较短并且相对统一,这样可以提高指令的执行速度。

        与RISC相对的是CISC(Complex Instruction Set Computer),CISC架构使用复杂的指令,每条指令可以完成多个操作,这些指令的执行时间可能不一致。CISC架构可能就不需要取出来放在寄存器中,而是在内存中就可以完成数据操作。 

 在??main_0指令段,

1.载入counter地址到R0

2.通过地址访问值

3.发生比较,APSR(截图右侧)输出N=1

4.如果是N,则跳转到自增指令段,如果不是,则顺序执行

假如使用的是指针,则减少了指令数,加快了程序运行。因为指针指向了地址,略去了载入地址的步骤

 

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

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

相关文章

常用工具网站之Emoji

https://www.emojiall.com/zh-hans/all-emojis 这个网站是一个收集和展示所有表情符号的网站。用户可以在这里找到各种不同类型的表情符号&#xff0c;并了解它们的含义和用法。 举例说明&#xff1a;在这个网站上&#xff0c;可以找到不同类型的奖牌表情符号&#xff0c;例如…

谈到这个痛点,写C的和不写C的码农都沉默了

声明&#xff1a;此篇为 ai123.cn 原创文章&#xff0c;转载请标明出处链接&#xff1a;https://ai123.cn/2246.html 作为一名在计算机软件行业工作的C工程师&#xff0c;我深知在高要求的内存管理环境中工作有多么艰难。内存分配与优化、避免内存泄漏&#xff0c;都是日常挑战…

Scrapy入门学习

文章目录 Scrapy一. Scrapy简介二. Scrapy的安装1. 进入项目所在目录2. 安装软件包Scrapy3. 验证是否安装成功 三. Scrapy的基础使用1. 创建项目2. 在tutorial/spiders目录下创建保存爬虫代码的项目文件3.运行爬虫4.利用css选择器Scrapy Shell提取数据例如: Scrapy 一. Scrapy…

2024谷歌开发者大会分享

前言&#xff1a; google一般会在每年的5月份在美国举行开发者大会&#xff0c;然后8-9月份会在中国也举办一次开发者大会&#xff0c;内容主题纲要是一致的&#xff0c;但是由于中国剧本的时间稍微晚一些&#xff0c;所以其内容会更新一些。 每年的开发者大会&#xff0c;会隐…

跟着B站前端面试总结回顾前端基础知识(二)

深拷贝与浅拷贝 在JavaScript中&#xff0c;深拷贝是一个常见的需求&#xff0c;特别是在处理复杂数据结构&#xff08;如对象、数组等&#xff09;时&#xff0c;需要确保原始数据不被修改。下面通过表格形式列出几种常见的深拷贝方法&#xff0c;并简要说明其优缺点。 方法…

【AI模型:追求全能还是专精?】

&#x1f493; 博客主页&#xff1a;倔强的石头的CSDN主页 &#x1f4dd;Gitee主页&#xff1a;倔强的石头的gitee主页 ⏩ 文章专栏&#xff1a;《热点时事》 期待您的关注 目录 引言 ​编辑 一&#xff1a;AI模型的全面评估和比较 二&#xff1a;AI模型的专精化和可扩展性…

宝塔安装yasd 远程调试 swoole

一、服务器安装yasd 1.安装yasd 按照官方文档&#xff0c;Yasd调试器官方文档 yum install boost boost-develgit clone https://github.com/swoole/yasd.gitcd yasdphpize --clean && phpize && ./configure --with-php-config/www/server/php/74/bin/php…

筛质数(线性筛法)

线性筛法&#xff1a; 假设有一个非质数 x&#xff0c;那么这个数可以被表示为一个最小质因数和一个因子相乘的形式 如 x 12 &#xff0c;那么 x 2*6 其中&#xff1a;2 就是 12 的最小质因数&#xff0c; 6 就是另一个因子 线性筛法就是利用每个数的最小质因数筛掉这个非…

做谷歌seo花钱多吗?

一分钱一分货&#xff0c;哪怕你是自己一个人做谷歌seo&#xff0c;服务器&#xff0c;域名的成本也是成本&#xff0c;当然&#xff0c;花费可能还少&#xff0c;但其中的时间精力&#xff0c;以及有没有效果&#xff0c;你大可自己掂量一下 你如果只是想随便做做&#xff0c;…

SSM框架之Mybatis框架

前言 什么是框架&#xff1f; 框架就是对技术的封装&#xff0c;将基础的技术进行封装&#xff0c;便于程序员使用&#xff0c;提高开发效率 ssm框架是什么&#xff1f; ssm包括spring、springMvc、Mybatis&#xff0c;是后端企业级开发时会使用到的框架组合&#xff0c;在…

python实战一:合并多个Excel中数据

看不懂可以跟着视频学一下&#xff0c;关于基础课程项目也可以私聊我&#xff01; 视频源码&#xff1a; 链接&#xff1a;https://pan.quark.cn/s/2055653f735b 之前我们已经学习了如何读取和写入Execl数据&#xff0c;今天我们来用一个实例来进行表格的合并。如下是 2021年…

离散数学中的逻辑基础(1)

目录 引言 1. 命题及其逻辑运算 2. 逻辑等价与范式 3. 逻辑推理规则 4. 逻辑问题练习 5. 总结 引言 逻辑是离散数学的核心概念之一&#xff0c;它用于精确描述数学命题并分析其关系。逻辑不仅是数学证明的基础&#xff0c;也是计算机科学中算法设计和编程的基石。本篇文…

【STM32】STM介绍

一、嵌入式与STM32 1.嵌入式 除了桌面PC之外&#xff0c;所有的控制类设备&#xff0c;都称之嵌入式。 1 ARM概述 1.1 历史 1978年&#xff0c;物理学家赫尔曼豪泽&#xff08;Hermann Hauser&#xff09;和工程师Chris Curry&#xff0c;在英国剑桥创办了CPU公司&#xff…

识别不到开发板串口问题(故事版)

最近电脑重新刷机了&#xff0c;很多东西都没了&#xff0c;很伤心。但也是锻炼自己基本功的能力。 我在用vscode开发ESP32的时候&#xff0c;发现一直识别不到串口&#xff0c;很纳闷&#xff0c;以为笔记本端口坏了&#xff1f; 转念一想觉得是因为没有加驱动 当时下面有一…

大模型学习应用 3: AutoDL 平台 transformers 环境搭建及模型部署使用(持续更新中)

之前我们学习了在和鲸的预配置好的平台上进行学习&#xff0c;在工作中并不现实&#xff0c;本期我们的目标是将已有模型部署到云端进行运行 配置环境&#xff1a;RTX 4090D(24GB) python 3.12(ubuntu22.04) 参考文章:AutoDL平台transformers环境搭建 目录 注册及选择算力新建…

E6000物联网主机:打造智慧楼宇的未来

智慧楼宇&#xff0c;作为现代建筑领域的璀璨明星&#xff0c;正以其独特的魅力和强大的功能改变着我们的生活和工作方式。它并非简单的建筑与技术的叠加&#xff0c;而是通过先进的信息技术和智能化系统的深度融合&#xff0c;实现对建筑内各项设施和服务的高效管理与优化。 智…

Mac怎么安装谷歌浏览器

谷歌浏览器凭借其强大的功能&#xff0c;成为广大用户的首选浏览器。其中Mac用户在进行下载和安装时&#xff0c;可能会出现一些困难。为了帮助大家顺利的在Mac系统中成功安装&#xff0c;下面就给大家详细分享Mac安装谷歌浏览器指南&#xff0c;希望对你有所帮助。 Mac安装谷歌…

xss-labs通关攻略 16-20关

第16关 ?keyword<img%0asrc"1.jpg"%0aοnerrοralert(1)> 第17关 查看源代码 输入 ?arg01a&arg02 οnmοuseοveralert("aini") 第18关 直接输入 ?arg01a&arg02 οnmοuseοveralert("aini") 第19关 需要下载一个flash 输…

国内纵向科研项目梳理

文章目录 1. 2023 年以后2. 2023 年以前2.1 国家重点研发计划2.1.1 重点专项 2.2 国家科技重大专项 3. 附&#xff1a;国家级和省部级科研项目列表 1. 2023 年以后 2023 年&#xff0c;根据新的国务院机构改革方案&#xff0c;科技部现有的多项管理职责和多个下属机构都将被分…

6款自动生成文章的软件,生成文章好用、操作简单

作为一名专业创作者&#xff0c;我深知内容生产的压力和挑战。在追求效率的同时&#xff0c;保持文章的质量和原创性是至关重要的。最近&#xff0c;我亲测了6款自动生成文章的软件&#xff0c;发现它们不仅操作简便&#xff0c;而且生成的文章质量令人满意。以下是我对这6款软…