问题标签 [armv8]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
arm64 - 如何在radare2中修复'无法在第3行组装'bl 0x400588'
我正在连接一个二进制文件(aarch64),我想重写分支指令以分支到特定地址。我正在使用 Radare2 重写分支。但是只要分支的目标地址在当前指令地址之前,它就会说“无法汇编...”。它也不能组装'b.gt ...'
即使我尝试使用 (wa) 编辑具有相同操作码的指令,它也会给出相同的错误(无法汇编),但如果我尝试使用 (wx) 复制十六进制指令,那么它可以工作!.对于其他指令,如 (mov),它也可以正常工作(使用 wa)
32bit-64bit - 如何在 gem5 模拟器中启用 aarch64 和 aarch32 之间的互通
我在 gem5 中使用 armv8 处理器模型运行模拟,并希望在我的模拟中同时运行 64 位和 32 位代码。但是,我发现当前的 gem5 实现似乎不支持互通。
相关不支持的功能 目前在 gem5 的 ARMv8-A 实现中,不支持 AArch32 和 AArch64 执行之间的互通。这限制了运行一些期望同时执行 32 位和 64 位代码的操作系统的能力,但预计会在短期内得到修复。此外,在实现中对 EL2 和 EL3 模式进行了有限的测试。
因为自从文档更新以来已经过了相当长的时间,我很好奇是否有人已经启用了互通功能,以便她的模拟可以在一个模拟中在 aarch64 和 aarch32 代码之间切换。如果你知道的话,你能帮我找出以前的努力(例如 arm-dev 分支)来启用互通吗?我还想咨询一下我可以从哪里开始支持互通,以防没有人尝试过。提前感谢您的评论。
arrays - 在 Armv8 Assembly 中访问和修改数组
我目前正在研究 Armv8 汇编语言,不太明白这里发生了什么。我们假设 vec 保存 64 位整数,而 i 是 64 位整数。我们还假设 vec 的地址在 x0 中,而 i 位于 x1 中。
我有点理解 ldr 指令,因为它说将 x0 的值存储到寄存器 x2 中。但我不明白这与我们在 vec 中想要的值是如何对应的,更重要的是为什么我们需要使用逻辑左移以及 add 指令中使用的偏移量?
非常感谢分解这个小型装配程序!
assembly - 将所有 LDUR 更改为 ADD 和 LD
考虑对执行以下指令的单周期非流水线处理器进行更改:LDUR
、STUR
和。考虑以以下方式用一对新指令替换指令的修改:R-type
CBZ
LDUR
原始代码:
新代码:
我被问到可能的优点和缺点。我可以看到在非流水线处理器上将一条指令变成 2 条指令的缺点。我似乎找不到任何可能的优势。
有谁知道这样做的可能优势?
assembly - 这个矩阵乘法代码的正确 ARMv7 到 ARMv8 NEON 端口是什么?
上面的代码是我在 ARM 网站上找到的(请参阅评论中的链接),适用于我的 ARM Cortex A9 机器,即 ARMv7 机器。
我现在正试图让它在 ARMv8 / aarch64 CPU 上运行。我找到了这张幻灯片: 移植到 ARM64
最后,它显示了一个矩阵乘法代码。但它使用循环,我猜(如果我看不正确,请纠正我)如果移植到新的 ARMv8 助记符,我发布的代码会更快。链接的文档还显示了一些 v7 -> v8 更改,例如,我将 vmul.32 之类的内容更改为 fmul 等等。示例中给出的寄存器名称与上面发布的代码中的名称不匹配。由于我对任何 ARM asm 都不完全流利,所以我不知道这里有什么等价物。例如,当我构建我的项目时,我收到如下错误:
不过,我不确定这是否是唯一的问题,所以我宁愿问:需要对代码进行哪些更改才能在 aarch64 机器上运行?
assembly - 如何为 Raspberry pi 3 编译 ARMv8 代码
我一直在按照这里的教程为我的树莓派编写一个基本的操作系统。我已经阅读了文档并更改了寄存器,以便它们应该运行,但由于树莓派 3 是 64 位的,因此使用 ARMv8,lsl 超出了范围。我使用的是 mac,所以使用的是 YAGATO,但我真的不知道如何或在哪里获得另一个 64 位编译器。
任何有兴趣的人的代码:
arm - 如何在 ARMv8 中使用 BMI 函数
目前在 Arm Assembly 为学校做一个项目,我很早就遇到了一个奇怪的问题。该程序将两个整数作为输入,并且应该打印第一个整数,然后打印该整数的绝对值。问题是当我输入一个负值时,我无法找到一种方法来识别它是否为负,因为无论我使用哪种分支条件,都不会采用分支。
这是在 Armv8 中,我尝试将 x1 中的值与 #0 进行比较,并同时使用 BLT 和 BMI,但似乎在任何一种情况下都没有采用分支。有趣的是,这个值总是被打印为负数,所以我很困惑它是如何工作的。
ssl - Boringssl 可以在裸机 ARM 系统中工作吗?
Boringssl 可以在 ARMv8 裸机平台上工作吗?我尝试使用 aarch64-elf-gcc 构建boringssl,但它拒绝构建。
如果是这样,任何移植指南或建议?
recursion - 汇编中的阿克曼函数 - 陷入无限递归
我正在尝试将 Ackermann 函数编写为汇编代码(在 ARMV8 中)。
(http://mathworld.wolfram.com/AckermannFunction.html https://en.wikipedia.org/wiki/Ackermann_function)
它需要递归。我的代码进入无限递归。我找不到堆栈指针处理的问题。
X0 和 X1 是输入寄存器。我在 X0 中返回结果。
raspberry-pi3 - Raspberry Pi 3 Model B:如何将字节顺序更改为 Big Endian?
我有一个 Raspberry Pi 3 Model B,我从 32 位 Raspbian 切换到 64 位 Gentoo Linux,因为我想测试一些 64 位应用程序。现在,我想测试一个以大端顺序访问数据字节的应用程序。我知道我可以通过交换单词中的字节来手动执行此操作。但我的主要问题是如何在 Raspberry Pi 上将字节顺序永久更改为大端,并且可能稍后在所有测试完成后再次切换回小端。任何线索将不胜感激。