arm64相关内容

内联汇编中的内存偏移

在 A64 汇编程序中,有多种指定地址的方法. /*[base{,#0}] 简单寄存器(独占) - 立即偏移[base{,#imm}] 偏移 - 立即偏移[base,Xm{,LSL #imm}] 偏移量 - 寄存器偏移量[base,Wm,(S|U)XTW {#imm}] 偏移量 - 扩展寄存器偏移量[基地,#imm]!预索引 - 立即偏移[base],#imm 后索引 - 立即偏移标签 PC 相 ..
发布时间:2021-11-17 22:46:51 其他开发

可以从 EL0 刷新 arm64 缓存吗?

我正在阅读一篇学术论文,其中指出“ARM 架构还包括驱逐缓存行的指令.但是,这些指令只能在处理器处于提升特权模式时使用." 这是真的吗?我一直在搜索 ARM 文档,但在“ARM Cortex-A 系列程序员指南 for ARMv8-A"第 11.5 章 http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.den0024a/B ..
发布时间:2021-11-17 22:46:42 其他开发

Aarch64 上同时存在不同大小的页面

根据架构概览文档 Aarch64 支持 4k 和 64k 页面.一些 CPU 还支持 16k 页.查看地址转换方案的详细信息,我得出的结论是,此类 CPU 不支持同时存在不同大小的页面(与 x86_64 不同,它允许这样做).我说得对吗? 解决方案 您将两种不同但相关的事物混为一谈 - 页面大小与粒度. 在 AArch64 中,您有 3 种可能的翻译粒度可供选择,每一种都会产生一组不 ..
发布时间:2021-11-17 22:46:39 其他开发

ARM STLR 内存排序语义

我正在为 ARM STLR 的确切语义而苦苦挣扎. 根据文档,它具有发布语义.所以如果你有 STLR 存储,你会得到: [StoreStore][LoadStore]X=r1 其中 X 是内存,r1 是一些寄存器. 问题在于发布存储和获取加载,无法提供顺序一致性: [StoreStore][LoadStore]X=r1r2=Y[加载加载][加载存储] 在上述情况下,允许重新排序 ..
发布时间:2021-11-17 22:46:36 其他开发

为什么/如何 gcc 在这个有符号溢出测试中编译未定义的行为,以便它适用于 x86 而不是 ARM64?

我正在自学 CSAPP,在运行断言测试时遇到一个奇怪的问题,得到了一个奇怪的结果. 我不知道从什么开始这个问题,所以让我先获取代码(文件名在评论中可见): //文件:2.30.c//作者:iBugint tadd_ok(int x, int y) {如果 ((x ^ y) > > 31)返回 1;//一个正数和一个负整数相加总是没有问题的如果 (x 0)返回 (x + y) >y;//x ..
发布时间:2021-11-17 22:46:34 其他开发

如何删除 100 条警告“隐式转换失去整数精度:'NSInteger'(又名'long')到'int'"更新到 arm64 后我得到了?

问题: 昨天我将我的一个大项目转换为支持arm64,然后我立即收到了 500 多个警告.其中大约 70% 是 NSInteger 被分配给 int 的地方,反之亦然,其余的是 NSUInteger 被格式化为 NSString 的地方,如下所示: NSInteger a = 123;NSString *str = [NSString stringWithFormat:@"Int:%d", ..

我们如何在Apple平台的AArch64程序集中在一行中编写多条语句?

我正在将一些 Arm64 汇编语言移植到 M1. 其中一些是由 C 预处理生成的,其中单个 #define 宏生成多个以分号分隔的语句. 不幸的是,在 M1 上,汇编程序将分号视为注释字符. 例如: #define DEFUN(NAME) \.globl _ ## 名称;\.palign 2 ;\_ ## 姓名: 导致 .globl 指令之后的所有内容都被视为注释. M ..
发布时间:2021-11-17 22:46:28 其他开发

ARM 上的面向返回编程(64 位)

我正在 ARM(64 位)上学习 Rop.因此,我正在我的 ARMv8 Cortex A-72 上测试 Rop 漏洞,以了解它在 Arm64 上的工作原理.我写了一个非常简单的c漏洞代码: #include #include 无效胜利(无符号魔法){如果(魔术== 0xdeadbeef)printf(“我不应该被召唤!\n");}无效漏洞(){字符缓冲区[80];printf("Buffer a ..
发布时间:2021-11-17 22:46:25 其他开发

ARMv8 - 在 64 位操作系统上运行传统的 32 位应用程序

通过阅读 ARMv8 手册,我有以下问题可以帮助理解大局. 可以使用旧版 32 位应用程序.(ARMv7 或更早版本)在 ARMv8 操作系统上按原样运行? 如果遗留应用程序需要为 ARMv8 重建并假设我将应用程序重建为 32 位 (Aarch32),这是否需要 32 位操作系统底层支持?(了解这里的寻址机制如何工作很有趣.) 请尽可能提供参考. PS:我的目标是支持 A ..
发布时间:2021-11-17 22:46:19 服务器开发

为 arm64 iOS 构建 C 库 (GMP)

我正在尝试为 arm64 构建一个 C 库(GMP 6.0.0),以便在 iOS 上使用.我正在使用下面的调用运行配置脚本(编译器是使用 xcrun --find 找到的). ./configure \CC="/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang" ..
发布时间:2021-11-17 22:46:10 移动开发

qemu-system-aarch64 从来宾系统中退出

我想知道是否有办法从 aarch64 版本的来宾系统中退出 qemu.例如,x86 具有用于此目的的 isa-debug-exit 设备. 有什么想法吗? 干杯 解决方案 这个问题的一般答案是“做任何你会在真实硬件上做的事情来导致断电".这的细节取决于 QEMU 正在模拟的机器.对于 aarch64“virt"板,您可以使用仿真的 PSCI 固件接口使用 SYSTEM_OFF ..
发布时间:2021-11-17 22:46:04 其他开发

在 AOSP 中启动时运行 shell 脚本

我的项目使用的是 iMX 8 Mini EVK.我从 AOSP 为这块板构建了 Android 9.0.现在我想在启动时运行一个脚本.我确实对文件进行了更改,但仍然遇到问题. 文件:Android_AOSP_build/device/fsl/imx8m/evk_8mm/init.rc service gea3appservice/vendor/bin/sh/vendor/bin/run.s ..
发布时间:2021-11-17 22:45:58 移动开发

尝试在 ubuntu 中编译 android 内核时出错

我正在尝试从源代码编译 Android 内核,并且已经下载了所有正确的软件包来执行此操作,但由于某种原因我收到此错误: arm-linux-androideabi-gcc:错误:无法识别的命令行选项“-mgeneral-regs-only"/home/livlogik/android/kernel/H901BK_L_Kernel/./Kbuild:35:目标'kernel/bounds.s'的配 ..
发布时间:2021-11-17 22:45:52 移动开发