cost 77 ms
为什么使用ADDS指令时R8被修改了?

[英]Why is R8 being modified when using ADDS instruction?

我正在使用 ARMSIM 测试我的 Arm 汇编代码。 我看到 R8 无故更新。 当我使用常规 ADD 指令时,不会发生这种情况。 我知道 ADDS 会更新标志,但为什么是 R8? ...

AArch64 的 QEMU:为什么执行停留在“ldr q1,[x0]”?

[英]QEMU for AArch64: why execution stucks at "ldr q1, [x0]"?

我有这个简单的 C 代码: 编译为: 并执行为: 印刷: 为什么不打印yyy ? 通过减少问题,我发现: 对于strcpy GCC 生成的代码不是“调用 strcpy”(见下文) ldr q1, [x0]导致不打印yyy 。 这是foo的生成代码: 如果我将ret放在ldr q1, [x0]将打 ...

ARM GCC + Cortex M4:调用地址为 function 生成 BLX 而不是 BL

[英]ARM GCC + Cortex M4: Calling address as function generates BLX instead of BL

我为 CortexM4 CPU 构建了尽可能少的操作系统,它能够通过 UART 接收编译的二进制文件并动态调度它们。 我想使用该功能来制作一个测试套件,该测试套件上传测试程序能够直接调用操作系统功能,如 memory 分配,而无需执行 SVC。 因此,我需要将这些操作系统例程的固定地址转换为 fu ...

mmap 和指令/数据缓存一致性:为什么我们可以复制和运行共享库?

[英]mmap and instruction / data cache coherency: Why can we copy and run shared libraries?

在 ARM 上,在向 memory 写入指令后,在执行指令之前需要一个 memory 屏障。 具体清理数据缓存,使指令缓存无效,然后在将执行代码的 CPU 上执行指令同步屏障 ( ISB )。 可以使用cp复制可执行文件或共享库,然后在没有显式 memory 障碍的情况下执行。 这相当于: 打开 ...

如何用JLink JTAG加载二进制文件到DRAM进行调试?

[英]How to load binary to DRAM with JLink JTAG to debug?

我正在做一个 ARM+RTOS 项目,我想用 JLink JTAG 下载二进制文件到目标板。 但是每次'loadbin a.bin 0x40000000'都会报错-1,说'failed to read memory',0x40000000是DRAM的起始地址。 我必须使用“r”命令重置 JTAG ...

2023-01-29 07:23:27   2   53    arm / jtag  
ARM ISA中MOV和CPY指令的区别

[英]Difference between MOV and CPY instruction in ARM ISA

ARM ISA中的MOV和CPY指令有什么区别? 我似乎找不到有效的区别。 ...

2023-01-26 16:48:45   1   33    arm / embedded  
32位系统中16位操作的原子性

[英]Atomicity of 16-bit operations in a 32-bit system

考虑一个 32 位系统(例如 ARM RISC MCU),如何确保以原子方式写入/读取 16 位变量? 基于此文档,如果我理解正确,16 位和 8 位操作都是原子操作,但仅假设 memory 对齐。 问题是,编译器是否总是将 memory 与 32 位字对齐(不包括打包结构等情况)? 此处的基本原理 ...

2023-01-25 08:35:42   2   57    c / arm / atomic  
在 ARMv6 汇编中,一个代码不起作用,但修改后的版本有效。 为什么?

[英]in ARMv6 assembly one code is not working, but the modified version works. Why?

我在 armv6 程序集中有一个程序,它计算 (x +y)^2 的结果此代码不起作用,并返回:“不受支持的 ARM 系统调用:0xffffffdf” 但是这个经过稍微编辑并且可以工作(或者没有?): 谁能告诉我为什么第一个代码不起作用? 第二个甚至有效吗? ...

如何在 ARM 或 THUMB 模式下写入 function 以读取 ARM CPSR?

[英]How to write a function to read ARM CPSR in either ARM or THUMB mode?

我正在使用 ARMv7 (Cortex-A7) 系统,我想在 ARM 模式或 THUMB 模式下从 C 文件读取 CPSR。 首先,我在 C function 中使用了嵌入式 ASSEMBLY 指令,如下所示, 当我用 -mthumb 编译 C 文件并用 GDB 运行代码时,它显示 regval ...

2023-01-22 23:57:09   2   53    gcc / arm  
例如,在 arm 程序集中,如何创建一个数组然后将每个元素递增 10?

[英]In arm assembly, how can I create an array then increment each element by 10, for example?

我想修改并完成我的教科书 (Harris-Harris) 中的一个示例。 例如,我如何编写一个程序来声明一个包含 5 个元素的数组,然后将每个元素递增 10? 该程序还必须打印数组的元素。 我搜索了一些资源,发现有多种方法可以在程序集 ARM 中创建数组。但是,在我发现的这些示例中,有一些我不理 ...

模拟异构系统,例如具有 P 和 E 内核的 ARM 处理器

[英]Emulating a heterogenous system, like an ARM Processor with P and E Cores

我正在尝试模拟一个处理器,该处理器由每个内核具有不同最大频率的处理器内核组成,例如 ARM 处理器或更新的 Intel 处理器,它们具有几个性能内核和效率内核。 我用 Qemu 试过了,但没走多远,我唯一发现的是qemu-system-aarch64 ,你可以在其中使用 nema 配置每个芯片的内核 ...

gcc 常量的内联 asm 模板 hash

[英]gcc inline asm template for constant with out hash

我正在尝试发出一个基于#define VALUE 的全局符号。 我的尝试如下: gcc 向汇编程序发出的内容如下: 我怎样才能摆脱VALUE之前的.set中的 hash。 FWIW,我的目标是 ARM。 ...

是否允许编译器在栈上的一个object出scope时不收回栈指针?

[英]Is the compiler allowed to not retract the stack pointer when an object on the stack goes out of scope?

我使用的是 Raspberry Pi Pico,它有两个内核,都有一个 4KB 堆栈,core0 在 core1 之上,这样 core0 在单线程应用程序中就有 8KB 的堆栈。 引发这个问题的要点如下: 这里我们在堆栈上分配了 4KB,“而我们有 8KB 的堆栈”。 然后我们从 scope 中得 ...

在 an505 M33 Qemu 上测量循环计数

[英]Measuring Cycle Count on an505 M33 Qemu

我正在尝试使用 QEMU 模拟 Arm 皮质 M33,使用 an505 model。我使用这个git 存储库作为起点。 我已经成功地构建了这个项目,甚至设法对其进行了调试,但是现在我想测量消耗的 cpu 周期——没有任何运气。 首先,我尝试像这样访问 DWT 寄存器: 但是 ARM_CM_DWT_C ...

为什么 C 代码在 __attribute__((naked)) 函数中不能正常工作?

[英]Why doesn't C code work properly in __attribute__((naked)) functions?

我正在研究 ARM CORTEX 微控制器,并为线程的上下文切换编写了 function 'x'。 这个 function 包括所有 __asm() 调用,因此我使用了__attribute__((naked)) 。 一段时间后,当我调用 function f() 时,整个 function x( ...

2023-01-20 17:07:33   1   59    c / arm  
如何在 macOS 上启用 Arm 指针验证码 (PAC)?

[英]How to enable the Arm Pointer Authentication Code (PAC) on macOS?

如何在 macOS 上启用 Arm 指针验证码 (PAC)? 我有一台配备 Apple M1 芯片的 MacBook Air。 CPU 实现 Arm 架构版本 v8.5-A,其中包括指针验证码 (PAC) 指令。 此功能通常用于防止通过 ROP 链注入恶意代码,通常利用堆栈上的缓冲区溢出。 我尝 ...

2023-01-20 16:37:03   1   25    assembly / arm  
如何使用 GNU -Os 在 ARM 中保持堆栈帧正确?

[英]How to keep stack frame right in ARM with GNU -Os?

我正在使用 arm-linux-gnueabi-gcc 构建和运行应用程序,并且正在测试 Linux 中的堆栈回溯 function。 然后我发现如果应用程序是使用 -Os 选项构建的,堆栈回溯不会按预期工作。 没有-Os,它可以很好地显示回溯。 我想让编译后的代码尽可能小,但仍然需要堆栈回溯才能 ...

2023-01-20 14:33:19   1   31    linux / gcc / arm  
防止 CPU 内核使用 LL 缓存

[英]Prevent a CPU core from using the LL cache

我有以下问题:我有一个在核心 0 上运行的低延迟应用程序,以及一个在核心 1 上运行的常规应用程序。我想确保核心 0 应用程序获得尽可能多的缓存,因此,我想制作核心1 绕过L3缓存(根本不用)和go直接在memory取数据。 有没有其他方法可以实现核心 0 应用程序优先使用 L3 缓存? ...

arm gcc aarch32编译longlong常量参数为什么跳过r1寄存器?

[英]arm gcc aarch32 compile longlong constants param why skip r1 register?

使用工具链: 构建 cmd: 发现代码: 编译为: 为什么不使用“r1”寄存器作为参数传递? 这使得“_printf”打印出乎意料。 测试十六进制长数 = 0x9abcdef000000000 如何修复或解决方法? 让“_printf”按预期打印“0x123456789abcdef0” ...

2023-01-17 07:33:04   1   31    gcc / arm  

 
粤ICP备18138465号  © 2020-2023 STACKOOM.COM