首页 > 其他分享 >ARM64: ARDP

ARM64: ARDP

时间:2024-03-24 14:22:18浏览次数:27  
标签:12 PC label ARDP x8 ARM64 寄存器

1 指令语法

ardp <Xd>, <lable>

2 指令语义

1 获取程序计数器PC寄存器的值;

2 将PC寄存器值的低12位全部取0;

3 将lable的值乘以4096,也就是将label左移12位;

4 将第2步的PC值与第3步的label值相加;

5 将第4步所得结果写入寄存器Xd

从上面步骤可以看出,得到的结果低12位为0,所以得到的是一个4KB页大小的首地址。

这个命令通常用于定位Mach-O文件中的某一位置的内容,比如定义的常量。通常是先使用ARDP命令计算出这个常量所在Mach-O的页首地址,然后再加上一个偏移量。

3 示例代码

    0x1b83a973c <+152>: adrp   x8, 738
->  0x1b83a9740 <+156>: ldr    q0, [x8, #0xee0]

上面示例代码中,adrp计算过程如下:
1 去ardp命令所在的PC寄存器的值,也就是0x1b83a973c

2 第1 步得到的值的低12位取0,则是0x1b83a9000;

3 label值的十进制数是738,换成十六进制为0x2e2,左移120x2e2000;

4 将第2步和第3步所得值相加,也就是0x1b83a9000 + 0x2e2000,得到0x1b8686000;

5 将第4步得到的值写入寄存器x8

通过命令image lookup可以看到,这个位置的内容是一个常量:

(lldb) image lookup -a $x8+0xee0
      Address: QuartzCore[0x000000018878bee0] (QuartzCore.__TEXT.__const + 16)
      Summary: 

标签:12,PC,label,ARDP,x8,ARM64,寄存器
From: https://www.cnblogs.com/chaoguo1234/p/18092388

相关文章

  • Macos arm64 ffmpeg h264 还原成yuv
    首先编译ffmpeg由于编译很多依赖尝试了三天果断放弃~使用brewbrewinstallffmpegbrewinfoffmpegcmakelist.txtcmake_minimum_required(VERSION3.20)project(ffmpeg_baseC)set(CMAKE_C_STANDARD11)set(FFMPEG_DIR/usr/local/Cellar/ffmpeg/6.1.1_3)include_......
  • arm64-ubuntu2204-opencv4.7.0源码编译
    参考:https://blog.csdn.net/weixin_43863869/article/details/128552342https://blog.csdn.net/weixin_39956356/article/details/102643415https://blog.csdn.net/quicmous/article/details/112714641 cdopencv-4.7.0 sudoapt-getinstallbuild-essentiallibgtk2.0-d......
  • ARM64上开启MTE
    参考https://zhuanlan.zhihu.com/p/545432403?utm_id=0软件版本Qemu:8.0.0Linux:6.5GCC:13.2.1内核配置参考arch/arm64/Kconfig:CONFIG_ARM64_AS_HAS_MTE:当编译器支持memtag时,这个宏辉自动设置CONFIG_ARM64_MTE:需要手动配置,默认就是yQemu启动参数示例:sudo/hom......
  • macos arm64 编译静态库
    下载ffmpeghttps://ffmpeg.org/releases/ffmpeg-snapshot.tar.bz2编译sudo./configure--enable-static--enable-gpl--enable-libx264--prefix=/opt/local--extra-cflags=-I/opt/local/include--extra-ldflags=-L/opt/local/lib--pkg-config-flags="--static&qu......
  • 手把手搭建QEMU ARM64开发环境
    根据上篇我们讲了搭建ARM32QEMU环境没看到的小伙伴可以看下https://mp.weixin.qq.com/s?__biz=MzUyNDUyMDQyNQ==&mid=2247483838&idx=1&sn=87a65f10e558bdfc35277153d4b42f6a&chksm=fa2d5f38cd5ad62ead217bd0efe857b2ac06e1a14042cacb488f926e8791b75f28c6ec930c4f&token=420704......
  • ubuntu_x86_64上运行arm64的程序
    摘自:百度文心一言 qemu-user-static是一个用于利用当前操作系统来运行其它架构的一个仿真器要使Ubuntu上运行ARM64程序,需要进行以下操作:安装QEMU模拟器:可以通过命令sudoapt-getinstallqemu-user-static来安装。这将为系统提供支持多种体系结构的能力。获取适用于ARM64的二进制......
  • Burp Suite Professional 2024.1.1 for macOS x64 & ARM64 (sysin) - 世界排名第一的
    BurpSuiteProfessional2024.1.1formacOSx64&ARM64(sysin)-世界排名第一的网络渗透测试工具包请访问原文链接:https://sysin.org/blog/burp-suite-pro-mac/,查看最新版。原创作品,转载请保留出处。作者主页:sysin.orgBurpSuiteProfessionalTheworld’s#1webpenet......
  • ubuntu_x86_64上运行arm64的程序
    摘自:百度文心一言ubuntu让arm64的程序在x86要使Ubuntu上运行ARM64程序,需要进行以下操作:安装QEMU模拟器:可以通过命令sudoapt-getinstallqemu-user-static来安装。这将为系统提供支持多种体系结构的能力。获取适用于ARM64的二进制文件或源代码:确保已经有了针......
  • Windows 11 version 23H2 中文版、英文版 (x64、ARM64) 下载 (updated Jan 2024)
    Windows11version23H2中文版、英文版(x64、ARM64)下载(updatedJan2024)Windows11,version23H2,2024年1月更新作者主页:sysin.orgWindows11目前版本所有的日期都按照ISO8601格式列出:YYYY-MM-DD)服务频道版本服务选项上市日期最后修订日期最新版本......
  • Windows 11 version 23H2 中文版、英文版 (x64、ARM64) 下载 (updated Jan 2024)
    Windows11version23H2中文版、英文版(x64、ARM64)下载(updatedJan2024)Windows11,version23H2,2024年1月更新请访问原文链接:https://sysin.org/blog/windows-11/,查看最新版。原创作品,转载请保留出处。作者主页:sysin.orgWindows11目前版本所有的日期都按照I......