arm64相关内容
一般问题:如果我使用交叉编译器,我如何知道在运行 configure 时应该给出的“--host"选项的值? 具体:我正在为 arm64 arch 使用交叉编译器.要使用的正确“--host"值是什么? 解决方案 如果我使用交叉编译器,我如何知道在运行 ./configure 时应该给出的 --host 选项的值? 讨论工具链创建时必须区分三台机器 构建机器,构建工具
..
我在 NSLog/NSAssert 等调用中有相当数量的字符串格式说明符,它们使用 %d 和 %u 和 NSInteger (= int on 32bit) 和 NSUInteger (= unsigned int on 32bit) 类型分别. 当将应用程序转换为 64 位时,这会发出警告(当然),因为 %ld %lu 预计现在变成了 long 和 unsigned长类型. 简单地转
..
我的任务是解释 C 代码(在 x86 上运行)的一些看似奇怪的行为.我可以轻松完成其他所有事情,但这个让我很困惑. 代码片段 1 输出 -2147483648 int a = 0x80000000;int b = a/-1;printf("%d\n", b); 代码片段 2 不输出任何内容,并给出一个浮点异常 int a = 0x80000000;int b = -1;int c =
..
我昨天发送了一个应用程序进行审核,没有问题.然后我意识到我需要做的修复很少(将地图的最大缩放级别从 19 更改为 18,没有别的),所以我从 iTunes Connect 中删除了二进制文件,并尝试重新提交. 现在我收到了这个警告: 我不明白为什么,因为我的架构是: 架构:armv7 有效架构:armv6、armv7、armv7s、arm64 该应用程序在模拟器中运行良好
..
我对在 aarch64 汇编器上实现“switch"运算符的方法很感兴趣.在 arm32 平台上,我使用了类似 ldr pc, [pc, ta, LSL#2]nop//对齐.int .L.case1.int .L.case2....int .L.caseN 但由于 64 位版本对 'pc' 寄存器的使用有很多限制,这样的实现不再起作用. 似乎最简单的方法是使用对比较和分支操作,如 c
..
出于学术原因,我将在 AArch64 上测试 sqrt 函数的性能.单浮点sqrtf函数的代码: fsqrt s0, s0退 双浮点sqrt函数的代码: fsqrt d0, d0退 我指的是此处 FSQRT 的理论延迟:http://infocenter.arm.com/help/topic/com.arm.doc.uan0015b/Cortex_A57_Software_Optimiza
..
我在 锆石内核启动.S str x0, [tmp, #:lo12:zbi_paddr] 用于 ARM64.我还发现 zbi_paddr 是在 C++ 中定义的: extern paddr_t zbi_paddr; 所以我开始研究 #:lo12: 是什么意思. 我发现 https://stackoverflow.com/a/38608738/6655884 看起来不错,但是它没有解释最
..
我使用 linaro g++ for ARM arch64 来编译一个简单的 cpp 文件: int main(){char *helloMain = "主模块 (crm.c)";长期教职员工,人数 = 12;int 停止,mainLoop = 1;字符字[80] = "";} 经过objdump生成的elf文件,我得到了它的asm代码: 0000000000001270 :int main
..
我正在阅读一篇学术论文,其中指出“ARM 架构还包括驱逐缓存行的指令.但是,这些指令只能在处理器处于提升特权模式时使用." 这是真的吗?我一直在搜索 ARM 文档,但在“ARM Cortex-A 系列程序员指南 for ARMv8-A"第 11.5 章 http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.den0024a/B
..
我正在为 ARM STLR 的确切语义而苦苦挣扎. 根据文档,它具有发布语义.所以如果你有 STLR 存储,你会得到: [StoreStore][LoadStore]X=r1 其中 X 是内存,r1 是一些寄存器. 问题在于发布存储和获取加载,无法提供顺序一致性: [StoreStore][LoadStore]X=r1r2=Y[加载加载][加载存储] 在上述情况下,允许重新排序
..
根据架构概览文档 Aarch64 支持 4k 和 64k 页面.一些 CPU 还支持 16k 页.查看地址转换方案的详细信息,我得出的结论是,此类 CPU 不支持同时存在不同大小的页面(与 x86_64 不同,它允许这样做).我说得对吗? 解决方案 您将两种不同但相关的事物混为一谈 - 页面大小与粒度. 在 AArch64 中,您有 3 种可能的翻译粒度可供选择,每一种都会产生一组不
..
通过阅读 ARMv8 手册,我有以下问题可以帮助理解大局. 可以使用旧版 32 位应用程序.(ARMv7 或更早版本)在 ARMv8 操作系统上按原样运行? 如果遗留应用程序需要为 ARMv8 重建并假设我将应用程序重建为 32 位 (Aarch32),这是否需要 32 位操作系统底层支持?(了解这里的寻址机制如何工作很有趣.) 请尽可能提供参考. PS:我的目标是支持 A
..
我已经在 qemu 64 位 ARM 上安装了 Debian (遵循本教程) uname -a Linux 测试 4.9.0-7-arm64 #1 SMP Debian 4.9.110-1 (2018-07-05) aarch64 GNU/Linux 我正在尝试在其上运行 32 位 elf 文件,但有些工作不能: bash: ./file_2: 无法执行二进制文件:Exec 格式错
..
我正在为 ARM8 (aarch64) 编写一些汇编代码.我想做一个除法并使用获得的余数进行进一步计算.在 x86 中,当我使用'div',我知道我的剩余部分保存在 RDX 中.我的问题是 - 是否有与 aarch64 指令集中相同的指令?我知道 'udiv' 和 'sdiv' 做无符号和有符号的除法,并得到商数.是否有一条指令可以给我余数?(我想要 c 中的 % 模运算符).我知道我可以使用代数
..
aarch64 架构没有用于多重存储和加载的指令,即没有来自 armv7 arch 的 stm 和 ldm 的等价物.相反,您必须使用 stp 和 ldp 指令来存储和加载寄存器对. 根据 ARM 参考手册: http://www.element14.com/community/servlet/JiveServlet/previewBody/41836-102-1-229511/ARM
..
LDAXR 和有什么区别?LDXR 指令超出 AArch64 指令集? 从参考手册来看,它们看起来完全一样(除了“获取"这个词): LDAXR - Load-Acquire Exclusive Register:从由基址寻址的存储器加载字到 Wt.记录物理地址为独占访问. LDXR - 加载独占寄存器:从内存中加载一个字,由基址寻址到 Wt.记录物理地址为独占访问. 谢谢
..
目前我正在开发一些与研究相关的程序,我需要找到一些特定地址的pte.我的开发环境是 Juno r1 板(CPU 是 A53 和 A57),它运行 arm64 Linux 内核. 我使用了一些典型的页表遍历代码,如下所示: int find_physical_pte(void *addr){pgd_t *pgd;pud_t *pud;pmd_t *pmd;pte_t *ptep;无符号长长地
..
Raspberry Pi Type 3 有 64 位 CPU,但它的架构不是 arm64 而是 armhf.arm64 和 armhf 有什么区别? 解决方案 armhf 代表“arm hard float",是给 一个 debian 端口,用于具有硬件浮点支持的 arm 处理器 (armv7+). 以beaglebone black为例: :~$ dpkg --print-arc
..
来自 android 开发者网站,https://developer.android.com/distribute/best-practices/develop/64-bit 很明显,从 2019 年 8 月 1 日起,Google Play 上发布的应用将需要支持 64 位架构. 我们当前的应用具有适用于 armeabi-v7a、arm64-v8a、x86 ABI 的本机库,但没有适用于
..
对于两个整数相加,我写: int sum;asm volatile("add %0, x3, x4" : "=r"(sum) : :); 我怎样才能用两个浮点数来做到这一点?我试过了: 浮点数;asm volatile("fadd %0, s3, s4" : "=r"(sum) : :); 但它给了我一个错误: 错误:操作数 1 应该是 SIMD 向量寄存器 -- `fadd x0,
..