ARM汇编指令

2023-11-04

ARM汇编指令

1. 汇编语法

1.1 mov
movw	r0, #63500	; 0xf80c

将63500放到r0寄存器的低八位中

movt	r0, #25667	; 0x6443f80c

将25667放到r0寄存器的高八位中

1.2 lsl 左移
stmdb	sp!, {r4, r5, r6, r7, sl, lr}
ldrb.w	r6, [sp, #44]	; 0x2c              
movs	r0, #16
lsl.w	r1, r0, r6
1.3 bx lr 返回值
bx	lr

返回值放在r0寄存器中

1.4 数组加载:注意数组在地址上的偏移需要 -* 4,而Index是正常的 * 1
28003a6e:	f641 7152 	movw	r1, #8018	; 0x1f52
28003a72:	f6c2 017f 	movt	r1, #10367	; 0x287f		
28003a76:	7808      	ldrb	r0, [r1, #0]				
28003a78:	f855 1020 	ldr.w	r1, [r5, r0, lsl #2]		
1.5 bne 判断不相等:判断r1寄存器是否等于0

2. 文件修改

1. 头文件和变量整理到模板中
2. 变量的赋值

​ 1. 删掉extern

  1. 在full.log中查找变量

    5dd87	. DW_TAG_variable
    	  DW_AT_name("xxx")
    	  DW_AT_decl_line(32)
    	  DW_AT_decl_column(23)
    	  DW_AT_decl_file(1)
    	  DW_AT_type(0x5c36a)
    	  DW_AT_external(true)
    	  DW_AT_declaration(false)
    	  DW_AT_location: addr(0x287f1f70)
    
  2. 继续查找DW_AT_type(0x5c36a)

    5c36a	. TAG_array_type
    	  DW_AT_ordering(ORD_row_major)
    	  DW_AT_byte_size(20)
    	  DW_AT_type(0x5c365)
    
    5c371	. . TAG_subrange_type
    	    DW_AT_type(0x5bfdf)
    	    DW_AT_byte_size(4)
    	    DW_AT_lower_bound(0)
    	    DW_AT_upper_bound(4)
    

    数组变量5个,继续向下查找

    1. 变量为指针变量
    5c365	. TAG_pointer_type
      DW_AT_type(0x5dc45)
    
    1. 找到最终的变量类型-结构体变量
    5dc45	. TAG_typedef
      DW_AT_name("xxx")
      DW_AT_decl_line(290)
      DW_AT_decl_column(3)
      DW_AT_decl_file(39)
      DW_AT_type(0x5dc2a)
    
    5dc2a	. TAG_structure_type
      DW_AT_decl_line(288)
      DW_AT_decl_column(1)
      DW_AT_decl_file(39)
      DW_AT_byte_size(65536)
      DW_AT_accessibility(DW_ACCESS_public)
    
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ARM汇编指令 的相关文章

  • 如何创建具有自定义外设和内存映射的 QEMU ARM 机器?

    我正在为 Cortex M3 cpu 编写代码 并且正在使用以下命令执行单元测试qemu arm二进制 现在一切都很好 但我想知道我是否能够使用测试整个系统qemu system arm 我的意思是 我想为 qemu 编写自定义 机器 我将
  • GNU Arm Cortex m4 上的 C++ 异常处理程序与 freertos

    2016 年 12 月更新现在还有一个关于此行为的最小示例 https community nxp com message 862676 https community nxp com message 862676 我正在使用带有 free
  • 将结构体偏移属性赋予汇编器

    如何将 C 结构体的偏移量发送到汇编代码 例如 在我的 C 代码中 typedef struct unsigned int a unsigned int b CMyStruct 我向 ASM 函数发送一个 CMyStruct 结构的指针 假
  • 小型 ARM 微控制器的 RTOS 内核之间的可量化差异 [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 有许多不同的 RTOS 可用于微控制器 我专门寻找支持 ARM Cortex M 处理器的 RTOS 另外 我对闭源解决方案不感兴趣 试图从网站
  • 手臂“版本”之间的差异? (仅限 ARMv7)

    基本上我想知道ARMv7l和ARMv7之间的区别hl 我有一个带有armv7l的arm处理器 并且有很多armv7的rpmhl 我完全不知道我必须搜索什么才能获得相关信息 这个 后缀 叫什么 还有其他类型吗 他们的做法有何不同 我假设它指示
  • ARM架构中不同处理器模式下如何使用内核堆栈?

    据我了解 每个进程都有一个用户堆栈和内核堆栈 除此之外 ARM 架构中的每种模式都有一个堆栈 所以我想知道不同的堆栈和堆栈指针在 ARM 模式下如何工作 另外 何时会使用与进程关联的内核堆栈 何时会使用与进程关联的内核堆栈 当您进行系统调用
  • DSP 库 - RFFT - 奇怪的结果

    最近我一直在尝试在我的STM32F4 Discovery评估板上进行FFT计算 然后将其发送到PC 我已经调查了我的问题 我认为我对制造商提供的 FFT 函数做错了 我正在使用 CMSIS DSP 库 现在我一直在用代码生成样本 如果工作正
  • 可以使用Visual Studio 2012构建ARM桌面程序吗?

    我正在使用 Visual Studio 2012 beta 我的桌面 win32 程序在 ARM 架构中编译得很好 升级到 Visual Studio 2012 RC 后 编译器无法工作并出现以下错误 不支持为 ARM 平台编译桌面应用程序
  • 交叉编译 Qt 4.7 时出现“非法指令”

    我已经在这个问题上苦苦挣扎了一个多星期了 但仍然找不到解决方案 我正在尝试为 ARM 设备交叉编译 Qt 4 7 嵌入式开源版本 构建过程本身可以顺利完成 但生成的二进制文件似乎包含处理器无法理解的指令 构建主机是 i386 上的 Debi
  • ARM + gcc:不要使用一大块 .rodata 部分

    我想使用 gcc 编译一个程序 并针对 ARM 处理器进行链接时间优化 当我在没有 LTO 的情况下编译时 系统会被编译 当我启用 LTO 时 使用 flto 我收到以下汇编错误 错误 无效的文字常量 池需要更近 环顾网络 我发现这与我系统
  • 产生并处理软件中断

    有人可以告诉我如何在Linux下生成软件中断然后用request irq处理它吗 或者也许这是不可能的 您可以使用软中断来代替 您可以通过编辑 include linux interrupt h 来定义您的 sofirq 然后使用函数 ra
  • 是否可以将 SpaCy 安装到 Raspberry Pi 4 Raspbian Buster

    我一整天都在安装 SpaCy sudo pip install U spacy Looking in indexes https pypi org simple https www piwheels org simple Collectin
  • Qemu flash 启动不起作用

    我有一本相当旧的 2009 年出版 嵌入式 ARM Linux 书 其中使用u boot and qemu 的用法qemu与u boot书中对二进制的解释如下 qemu system arm M connex pflash u boot b
  • 什么是遗留中断?

    我正在开发一个项目 试图弄清楚 ARM 架构的全局中断控制器中如何处理中断 我正在使用 pl390 中断控制器 我看到有一条线被称为传统中断 它绕过了分配器逻辑 假设有 2 个中断可以被编程为传统中断 任何人都可以帮助解释一下什么是遗留中断
  • 架构armv7的重复符号

    尝试在我现有的应用程序中使用 Layar SDK 时出现以下错误 我该如何解决这个问题 Ld Users pnawale Library Developer Xcode DerivedData hub afxxzaqisdfliwbzxbi
  • arm64和armhf有什么区别?

    Raspberry Pi Type 3 具有 64 位 CPU 但其架构不是arm64 but armhf 有什么区别arm64 and armhf armhf代表 arm hard float 是给定的名称Debian 端口 https
  • 设备树不匹配:.probe 从未被调用

    我无法理解设备树的工作原理 或者具体来说为什么该驱动程序无法初始化 这是在 android 版本 3 10 的 rockchip 供应商内核中 驱动程序 看门狗 rk29 wdt c 为了可读性而减少 static const struct
  • 交叉编译armv5,但它创建v7二进制文件

    我设法为arm926ej s创建了一个目标文件我在 qemu 上使用 Debian Arm arm linux gnueabi gcc 4 4 static O c mcpu arm926ej s hello c o hello root
  • 英特尔的最后分支记录功能是英特尔处理器独有的吗?

    最后分支记录是指存储与最近执行的分支相关的源地址和目标地址的寄存器对 MSR 的集合 它们受英特尔酷睿 2 英特尔至强和英特尔凌动处理器系列的支持 http css csail mit edu 6 858 2012 readings ia3
  • 需要一些建议来开始在 ARM(使用 Linux)平台上编程

    我 也许 很快就会在托管 Linux 发行版的 ARM 平台上工作 我不知道哪个发行版 我知道该项目涉及视频流 但我无法告诉你更多信息 其实我只收到通知 还没见到任何人 我从来没有在这样的平台上工作过 所以我的想法是在项目开始之前进行测试

随机推荐

  • javaWeb

    1 基本概念 Web开发 静态网页 提供给所有人看的数据始终不会发生变化 动态网页 提供给所有人看的数据始终会发生变化 每个人在不同的时间 不同的地点看到的信息各不相同 在java中 动态Web资源开发的技术统称为javaWeb web应用
  • 脑电信号EEG分类基础入门(1)机器学习编程环境搭建

    网上大多数资料都是基于python语言的 我的编程环境和工程都是python 但也会用matlab来可视化理解 用到的安装包和代码资料已经整理好了 https download csdn net download fzf1996 21484
  • Linux学习笔记:用fdisk工具分区,swap分区的管理

    1 什么是MBR 什么是分割表 MBR master boot record 即硬盘的主引导记录 分割表 partition table 即硬盘的分区表 在系统关机时 硬盘内的磁盘上的磁头会回到整个磁盘的第一个扇区 当再次启动系统时 磁头会
  • ccwow服务器维护,牧师 - 军团再临 - 178魔兽世界

    牧师职业大厅 军团再临资料片中最大的改动便是神器和职业大厅了 如同德拉诺版本的要塞系统一样 7 0的职业大厅便像是一个强化版的要塞 不过在这里你不再是一个人 相同职业的玩家都会和你在一起来共同探索破碎群岛对抗燃烧军团 那让我们走进虚空之光神
  • calico固定podip

    实现方法 利用calico组件的两个kubernetes注解 1 gt cni projectcalico org ipAddrs 2 gt cni projectcalico org ipv4pools 场景1 单个pod固定ip 利用c
  • HttpClient release connection 该放手的时候必须放手

    Apache commons 系列的HttpClient 相信大家都用过 选择它而非JDK 的java net HttpURLConnection 是为了使用HttpClient 封装的几个实用的功能 目前使用最多的版本还是httpclie
  • 腾讯云2022年双11云服务器配置及报价表汇总

    活动直达 点此进入腾讯云2022年双11活动主会场 腾讯云2022年双11活动的既有轻量应用服务器又有云服务器 购买资格分为个人企业同享和企业用户专享 因此 价格表可分为个人企业同享轻量应用服务器 个人企业同享云服务器 企业专享轻量应用服务
  • 618来袭!我用Python脚本实现了淘宝定时自动秒杀,小白也能轻松搞定!

    准备工作 我们需要把秒杀的商品加入购物车 因为脚本点击的是全选 所以不需要的商品要移出购物车 展示篇幅有限 淘宝秒杀程序的完整源代码已经打包好了 需要的朋友可以扫码加v 我分享给你 过程分析 1 打开某宝网站 pq webdriver Ch
  • 基于Fisco的测压工具使用笔记

    基本过程就是这样了 因为当初写的时候是用OneNote写的 复制过来是图片形式 然后主要的坑就是官方的源码有错误 官方也给了修改意见 根据 修改意见 修改源码 修改完我还碰到一个坑 不知道为什么这个位置缺少文件 移动到这个文件下添加solc
  • 【LeetCode】Day211-不用加减乘除做加法

    题目 剑指 Offer 65 不用加减乘除做加法 中等 题解 不能用加减乘除的题 要考虑位运算 设两数字的二进制形式a b s a b a i 代表a的二进制的第i位 则分为以下四种情况 a i b i 无进位和n i 进位c i 1 0
  • 字符串的总结(atoi和itoa函数的实现)

    目录 一 常见的字符串函数 strlen strcpy strcat strcmp 二 关于atoi函数的实现 三 关于itoa函数的实现 一 常见字符串的函数 strlen strcpy strcat strcmp 1 strlen 求字
  • 在网址上输入www.xxx.com到返回界面给用户发生了什么?

    在网址上输入www xxx com到返回界面给用户发生了什么 DNS域名解析 https blog csdn net m0 37812513 article details 78775629 gt tcp三次握手建立连接 https blo
  • Shiro 如何使用注解式进行授权操作呢?

    转自 Shiro 如何使用注解式进行授权操作呢 下文笔者讲述Shiro进行注解式授权操作的方法分享 如下所示 Shiro注解授权 常使用以下注解字段 如 RequiresRoles RequiresPermissions RequiresA
  • 关闭TCP中135、139、445、593、1025 等端口的操作方法 (转)(记录下)

    操作要领 封闭端口 杜绝网络病毒对这些端口的访问权 以保障计算机安全 减少病毒对上网速度的影响 近日发现有些人感染了新的网络蠕虫病毒 该病毒使用冲击波病毒专杀工具无法杀除 请各位尽快升级计算机上的杀毒软件病毒库 在断开计算机网络连接的情况下
  • AndeSight头文件缺失错误

    使用AndeSight开发山景Demo遇到的问题 路径别带中文名字 一个都不要 其实主要就是一个 当我导入demo之后 编译时遇到问题 缺失 h文件 各种缺失 那么这里我们也可以一个个导入 但是很难受 这里实际上只要在baseSDK建立工程
  • 西门子PLC入门-PLC介绍

    PLC全名 可编程逻辑控制器 Programmable Logic Controller 一种具有微处理器的用于自动化控制的数字运算控制器 可以将控制指令随时载入内存进行储存与执行 PLC由CPU 指令及数据内存 输入 输出接口 电源 数字
  • Stream流处理快速上手最佳实践

    一 引言 JAVA1 8得益于Lambda所带来的函数式编程 引入了一个全新的Stream流概念Stream流式思想类似于工厂车间的 生产流水线 Stream流不是一种数据结构 不保存数据 而是对数据进行加工处理 Stream可以看作是流水
  • 【前端面试题】/【Vue】组件中的data为什么要定义成一个函数而不是一个对象?

    Q 组件中的data为什么要定义成一个函数而不是一个对象 A 因为当定义为一个数组 对象时候 我们改变data中其中一个数据的值的时候 会影响到其他的数据 导致数据污染 而定义为一个函数 则可以避免这个情况 参考 每个组件都是 Vue 的实
  • Cadence(OrCAD)原理图导入到PADS Layout遇到的问题和解决方法

    看到有网友留言说将Cadence画的原理图导入到PADS Layout中没有成功 先在Cadence中导出原理图的网表 当然这里的网表是PADS Layout支持的 asc格式 然后在PADS Layout导入该网表文件 最终出现提示错误的
  • ARM汇编指令

    ARM汇编指令 1 汇编语法 1 1 mov movw r0 63500 0xf80c 将63500放到r0寄存器的低八位中 movt r0 25667 0x6443f80c 将25667放到r0寄存器的高八位中 1 2 lsl 左移 st