【Android 逆向】ARM CPU 架构体系 ( ARM 内存模型 | ARM 架构堆的实现 | ARM 架构栈的实现 )

简介: 【Android 逆向】ARM CPU 架构体系 ( ARM 内存模型 | ARM 架构堆的实现 | ARM 架构栈的实现 )

文章目录

一、ARM 内存模型

二、ARM 架构堆的实现

三、ARM 架构栈的实现





一、ARM 内存模型


ARM 架构体系中 , CPU 直接访问内存 , 控制内存中的状态和数据 , 内存中映射外部设备 , 外设通过内存中的状态数据改变外设内部的情况 ;

如 : CPU 读取硬盘数据 , 首先访问内存中的对应内存块 A , 内存块向硬盘控制器发送命令 , 硬盘控制器将数据取出放到另外一块内存 B 中 , 通过内存状态转换 , 告知内存已经读取完毕 , CPU 可以直接访问内存中内存块 B 中的数据 ;

所有的外设基本都有一块属于自己的内存 , 有的时在内存中映射的 , 有的自带内存 , 如显卡显存 ;


image.png






二、ARM 架构堆的实现


应用程序 向 系统 请求内存 , 系统通过系统调用 , 分配内存 , 内存分配完毕后 , 返回内存的首地址给应用程序 ;


申请完内存后 , 需要 free 释放内存 , 否则会造成泄漏 ;


image.png






三、ARM 架构栈的实现


如果参数小于等于 3 33 个 , 则只需要使用 R0 , R1, R2 这 3 33 个寄存器存放参数 , 这 3 33 个寄存器变相的称为了栈 ;


如果参数大于等于 4 44 个 , 则 R3 寄存器记录栈地址 ( 栈的起始位置 ) , 如下图所示 ;


在 ARM 中 , 栈指针只会 push 到寄存器中 , 但是不使用 ; 使用到栈中的参数时 , 会使用变量寄存器将栈地址保存起来 , 使用变量寄存器中的地址 ;


image.png

目录
相关文章
【各种问题处理】X86架构和ARM架构的区别
【1月更文挑战第13天】【各种问题处理】X86架构和ARM架构的区别
|
4月前
|
存储 Java 编译器
【面试知识】Java内存分配之常量池、堆、栈
【面试知识】Java内存分配之常量池、堆、栈
|
4月前
|
Web App开发 NoSQL 安全
ARM架构-银河麒麟v10-server离线安装Harbor
ARM架构-银河麒麟v10-server离线安装Harbor
322 0
|
3月前
|
缓存 API Android开发
一起学点ARM的微架构二?
一起学点ARM的微架构二?
74 1
|
5天前
|
敏捷开发 数据可视化 物联网
云效产品使用常见问题之用ARM架构的机器意义不知道如何解决
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
1月前
|
存储 程序员 编译器
【C/C++ 堆栈以及虚拟内存分段 】C/C++内存分布/管理:代码区、数据区、堆区、栈区和常量区的探索
【C/C++ 堆栈以及虚拟内存分段 】C/C++内存分布/管理:代码区、数据区、堆区、栈区和常量区的探索
30 0
|
1月前
|
存储 机器学习/深度学习 并行计算
阿里云服务器X86计算、Arm计算、GPU/FPGA/ASIC、高性能计算架构区别
在我们选购阿里云服务器的时候,云服务器架构有X86计算、ARM计算、GPU/FPGA/ASIC、弹性裸金属服务器、高性能计算可选,有的用户并不清楚他们之间有何区别,本文主要简单介绍下不同类型的云服务器有何不同,主要特点及适用场景有哪些。
阿里云服务器X86计算、Arm计算、GPU/FPGA/ASIC、高性能计算架构区别
|
1月前
|
存储 缓存 Rust
【Rust】——所有权:Stack(栈内存)vs Heap(堆内存)(重点)
【Rust】——所有权:Stack(栈内存)vs Heap(堆内存)(重点)
22 0
|
1月前
|
存储 缓存 安全
【ARM架构】ARMv8-A 系统中的安全架构概述
【ARM架构】ARMv8-A 系统中的安全架构概述
32 0
|
1月前
|
存储 机器学习/深度学习 人工智能
嵌入式中一文搞懂ARM处理器架构
嵌入式中一文搞懂ARM处理器架构
38 1