arm64相关内容
我使用 linaro g++ for ARM arch64 来编译一个简单的 cpp 文件: int main(){char *helloMain = "主模块 (crm.c)";长期教职员工,人数 = 12;int 停止,mainLoop = 1;字符字[80] = "";} 经过objdump生成的elf文件,我得到了它的asm代码: 0000000000001270 :int main
..
在 A64 汇编程序中,有多种指定地址的方法. /*[base{,#0}] 简单寄存器(独占) - 立即偏移[base{,#imm}] 偏移 - 立即偏移[base,Xm{,LSL #imm}] 偏移量 - 寄存器偏移量[base,Wm,(S|U)XTW {#imm}] 偏移量 - 扩展寄存器偏移量[基地,#imm]!预索引 - 立即偏移[base],#imm 后索引 - 立即偏移标签 PC 相
..
自从我更新到 Xcode 5.1 后,将标准架构更改为还包括 arm64,我不断收到来自链接器的以下错误: 0 0x109157f93 __assert_rtn + 1441 0x1091faed4 ld::passes::stubs::Pass::makeStub(ld::Atom const&, bool) + 02 0x1091fb5f7 ld::passes::stubs::pass::
..
我正在阅读一篇学术论文,其中指出“ARM 架构还包括驱逐缓存行的指令.但是,这些指令只能在处理器处于提升特权模式时使用." 这是真的吗?我一直在搜索 ARM 文档,但在“ARM Cortex-A 系列程序员指南 for ARMv8-A"第 11.5 章 http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.den0024a/B
..
根据架构概览文档 Aarch64 支持 4k 和 64k 页面.一些 CPU 还支持 16k 页.查看地址转换方案的详细信息,我得出的结论是,此类 CPU 不支持同时存在不同大小的页面(与 x86_64 不同,它允许这样做).我说得对吗? 解决方案 您将两种不同但相关的事物混为一谈 - 页面大小与粒度. 在 AArch64 中,您有 3 种可能的翻译粒度可供选择,每一种都会产生一组不
..
我正在为 ARM STLR 的确切语义而苦苦挣扎. 根据文档,它具有发布语义.所以如果你有 STLR 存储,你会得到: [StoreStore][LoadStore]X=r1 其中 X 是内存,r1 是一些寄存器. 问题在于发布存储和获取加载,无法提供顺序一致性: [StoreStore][LoadStore]X=r1r2=Y[加载加载][加载存储] 在上述情况下,允许重新排序
..
我正在自学 CSAPP,在运行断言测试时遇到一个奇怪的问题,得到了一个奇怪的结果. 我不知道从什么开始这个问题,所以让我先获取代码(文件名在评论中可见): //文件:2.30.c//作者:iBugint tadd_ok(int x, int y) {如果 ((x ^ y) > > 31)返回 1;//一个正数和一个负整数相加总是没有问题的如果 (x 0)返回 (x + y) >y;//x
..
问题: 昨天我将我的一个大项目转换为支持arm64,然后我立即收到了 500 多个警告.其中大约 70% 是 NSInteger 被分配给 int 的地方,反之亦然,其余的是 NSUInteger 被格式化为 NSString 的地方,如下所示: NSInteger a = 123;NSString *str = [NSString stringWithFormat:@"Int:%d",
..
我正在将一些 Arm64 汇编语言移植到 M1. 其中一些是由 C 预处理生成的,其中单个 #define 宏生成多个以分号分隔的语句. 不幸的是,在 M1 上,汇编程序将分号视为注释字符. 例如: #define DEFUN(NAME) \.globl _ ## 名称;\.palign 2 ;\_ ## 姓名: 导致 .globl 指令之后的所有内容都被视为注释. M
..
我正在 ARM(64 位)上学习 Rop.因此,我正在我的 ARMv8 Cortex A-72 上测试 Rop 漏洞,以了解它在 Arm64 上的工作原理.我写了一个非常简单的c漏洞代码: #include #include 无效胜利(无符号魔法){如果(魔术== 0xdeadbeef)printf(“我不应该被召唤!\n");}无效漏洞(){字符缓冲区[80];printf("Buffer a
..
当我尝试在运行 64 位 oracle JDK 的 ARM64 机器上启动 cassandra 3.9 和 3.7 时.但它无法启动,没有发现类 def 错误.JNA 似乎有问题. 不过同样在 ARM32 机器上运行良好. 下面是cassandra的启动日志:- pi@DietPi:~/cassandra/apache-cassandra-3.9/conf$ ../bin/cas
..
通过阅读 ARMv8 手册,我有以下问题可以帮助理解大局. 可以使用旧版 32 位应用程序.(ARMv7 或更早版本)在 ARMv8 操作系统上按原样运行? 如果遗留应用程序需要为 ARMv8 重建并假设我将应用程序重建为 32 位 (Aarch32),这是否需要 32 位操作系统底层支持?(了解这里的寻址机制如何工作很有趣.) 请尽可能提供参考. PS:我的目标是支持 A
..
显然 CGFloat 在 arm64 上是 double : #if 已定义(__LP64__) &&__LP64__# 定义 CGFLOAT_TYPE 双精度# 定义 CGFLOAT_IS_DOUBLE 1# 定义 CGFLOAT_MIN DBL_MIN# 定义 CGFLOAT_MAX DBL_MAX#别的# 定义 CGFLOAT_TYPE 浮点数# 定义 CGFLOAT_IS_DOUBLE
..
我曾经构建过 api 级别 19 的 arm64-v8a 库,使用 android.toolchain.cmake 与 Android NDK r16b 一样. ${CMAKE} \-DCMAKE_TOOLCHAIN_FILE=${TOOLCHAIN_FILE} \-DANDROID_NDK=$ANDROID_NDK_HOME \-DANDROID_ABI="arm64-v8a" \-DANDR
..
我正在尝试为 arm64 构建一个 C 库(GMP 6.0.0),以便在 iOS 上使用.我正在使用下面的调用运行配置脚本(编译器是使用 xcrun --find 找到的). ./configure \CC="/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang"
..
我的项目中有一段代码 - (NSData *)getIvars:(unsigned int *)count from:(id)class_name NS_RETURNS_RETAINED {@同步(自我){SEL 选择器 = @selector(copyIvarList:from:);Method grannyMethod = class_getInstanceMethod([class_nam
..
我想知道是否有办法从 aarch64 版本的来宾系统中退出 qemu.例如,x86 具有用于此目的的 isa-debug-exit 设备. 有什么想法吗? 干杯 解决方案 这个问题的一般答案是“做任何你会在真实硬件上做的事情来导致断电".这的细节取决于 QEMU 正在模拟的机器.对于 aarch64“virt"板,您可以使用仿真的 PSCI 固件接口使用 SYSTEM_OFF
..
我正在尝试从 LKM 中禁用 ARM64 系统上的内存写保护.(在Xen hypervisor的DOM0中开始) 我通过使用 Linux 内核函数找到了一个虚拟地址对应的 PTE. pgd_t *pgd;pte_t *ptep, pte;pud_t *pud;pmd_t *pmd;pgd = pgd_offset(init_mm, (addr));如果 (pgd_none(*pgd) ||
..
我的项目使用的是 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
..
我正在尝试从源代码编译 Android 内核,并且已经下载了所有正确的软件包来执行此操作,但由于某种原因我收到此错误: arm-linux-androideabi-gcc:错误:无法识别的命令行选项“-mgeneral-regs-only"/home/livlogik/android/kernel/H901BK_L_Kernel/./Kbuild:35:目标'kernel/bounds.s'的配
..