arm相关内容

ARM 程序集中的函数地址有一个字节偏移?

例如,我有以下由 objdump 得到的汇编代码.f()的地址是080001d4.但是 printf("%x", f) 输出 080001d5.而 f() 可以通过 (*((int (*)())080001d5))() 但 (*((int (*)())080001d4))(). 为什么函数地址有一个字节偏移? 080001d4 :80001d4: 2000 移动 r0, #08000 ..
发布时间:2022-01-17 13:41:20 其他开发

Intel x86 到 ARM 程序集转换

我目前正在学习ARM汇编语言; 为此,我正在尝试将一些 x86 代码(AT&T 语法) 转换为 ARM 汇编 (Intel 语法) 代码. __asm__("movl $0x0804c000, %eax;");__asm__("mov R0,#0x0804c000"); 从这个 document,我了解到在 x86 中的 Chunk 1堆结构从 0x0804c000 开始.但是当我尝试在 ..
发布时间:2022-01-17 13:40:36 其他开发

ARM汇编中.equ和.word之间的区别?

我很好奇 - 在定义常量时,ARM 程序集中的 .equ 和 .word 指令有什么区别? 解决方案 .equ类似于C语言中的#define: #define bob 10.equ 鲍勃,10 .word 类似于 C 中的 unsigned int: 无符号整数;特德:.word 0 或者用一个值初始化: unsigned int alice = 42;爱丽丝:.word 42 ..
发布时间:2022-01-17 13:40:21 其他开发

如何在 ARM 上使用 kgdb?

我使用 ARMv7 作为目标机器.我已经为目标编译了 Linux 源代码 2.6.34.13. Target 使用 minicom 通过串口与主机(Linux 开发机)连接. Target 已加载新内核并在命令提示符下启用 KGDB. $ echo ttyAMA0 >/sys/模块/kgdboc/参数/kgdboc$回声g>/proc/sysrq-触发器 正在输入 KGDB... ..
发布时间:2022-01-17 13:40:15 其他开发

TrustZone 与 Hypervisor

我只是在阅读 这个文档来自 ARM 的 TrustZone,有些事情我不清楚. Hypervisor 提供了一种特殊的 CPU 模式,而对于 TrustZone,处理器带有一个额外的第 33 位:是't mode 也是一个特定的位设置?那么,额外的一点如何在安全性方面产生所有这些差异.我确实理解额外的位为两个单独的 32 位地址间距让路,但除此之外,我无法将两个和两个放在一起.有人能清楚地解 ..
发布时间:2022-01-17 13:39:52 其他开发

ARM中的字节顺序转换

如何在 ARM 中将大端转换为小端? 解决方案 你是在说 ARM 的字节序模式,还是在读一些其他大字节序处理器写的东西等等? 通常在大端/小端之间进行转换,您会交换字节.所以 0xABCD 被视为 16 位数字时为 0xCDAB 0x12345678 被视为 32 位数字时为 0x78563412. ARM 内核 armv5 和更早版本(ARM7、ARM9 等)具有称为 BE- ..
发布时间:2022-01-17 13:39:36 其他开发

为什么arm-linux-gnueabi-g++-4.4总是建一个“7-A"?二进制?

我正在运行 Ubuntu 12:04LTS 并安装了 arm-linux-gnueabi C 和 C++ 编译器.编译后的二进制文件不会在我的目标板上运行.看起来即使我指定了 cpu 和 arch,编译器仍然为错误的 CPU 构建二进制文件.而不是 atm9tdmi 它构建和 7-A. 我做错了什么还是我应该配置什么?谢谢. ~/ArmTest$ arm-linux-gnueabi-g++ ..
发布时间:2022-01-17 13:39:19 服务器开发

如何自我 dlopen 可执行二进制文件

我写了一个程序来 dlopen 自己 void hello(){printf("你好世界\n");}int main(int argc, char **argv){字符 *buf="你好";无效 *hndl = dlopen(argv[0], RTLD_LAZY);void (*fptr)(void) = dlsym(hndl, buf);如果(fptr!= NULL)fptr();dlclos ..
发布时间:2022-01-17 13:39:12 服务器开发

交叉编译 helloworld for ARM

我正在为 ARM-CORTEX-A9 尝试一个简单的交叉编译 (cc):为了简单起见,这就是 c 代码: #include 主函数(){printf("Hello World!\n");返回0;} arm 上的原生编译工作正常,并以 gcc helloworld.c -o helloworld 开始,而交叉编译则以 arm-xilinx-linux-gnueabi-gcc h ..
发布时间:2022-01-17 13:39:06 其他开发

哪些变量类型/大小在 STM32 微控制器上是原子的?

以下是 STM32 微控制器上的数据类型:http://www.keil.com/support/man/docs/armcc/armcc_chr1359125009502.htm. 这些微控制器使用 32 位 ARM 核心处理器. 哪些数据类型具有自动原子读取和原子写入访问权限? 我很确定所有 32 位数据类型都可以(因为处理器是 32 位的),而所有 64 位数据类型都不会( ..
发布时间:2022-01-17 13:39:00 其他开发

ARM和NEON可以并行工作吗?

这是参考问题:内部 Neon 的校验和代码实现 打开链接中列出的子问题作为单独的问题.由于多个问题不能作为单线程的一部分提出. 不管怎样,问题来了: ARM 和 NEON(就 arm cortex-a8 架构而言)真的可以并行工作吗?我怎样才能做到这一点? 有人可以指点我或分享一些示例实现(伪代码/算法/代码,而不是理论实现论文或演讲),它们一起使用了 ARM-NEON 的 ..
发布时间:2022-01-17 13:38:24 其他开发

在 ubuntu for arm 上交叉编译 Boost 1.57.0

我是交叉编译过程的新手.需要为arm交叉编译boost库.请建议交叉编译 boost 库的步骤.是否可以交叉编译boost库所需的功能? 解决方案 您可以使用以下步骤交叉编译 Boost: 引导构建系统: ./bootstrap.sh 修改配置文件 (project-config.jam) 以使用 ARM 工具链,方法是将 using gcc 行替换为: 使用 gcc : ar ..
发布时间:2022-01-17 13:38:09 其他开发

ARM、Thumb 和 Thumb 2 指令编码有什么区别?

我对指令集有点困惑.有 Thumb、ARM 和 Thumb 2.根据我的阅读,Thumb 指令都是 16 位的,但在 ARMv7M 用户手册(第 vi 页)中有 Thumb 16 位和 Thumb 32 位指令提及. 现在我必须克服这种困惑.据说 Thumb 2 支持 16 位和 32 位指令.那么 ARMv7M 实际上是否支持 Thumb 2 指令而不仅仅是 Thumb? 还有一件事 ..
发布时间:2022-01-17 13:36:53 其他开发

qemu-system-aarch64 在模拟 a53 开机时进入 el1

我已经下载了最新的 qemu Windows 版本然后在下面运行 qemu-system-aarch64 -M virt,gic_version=3 -cpu cortex-a53 -smp 2 -nographic-m 2048 -kernel mybaremetal.axf -s -S 为了模拟双核 cortex-a53,我可以使用 aarch64 gdb 客户端连接到它,在 mybare ..
发布时间:2022-01-17 13:36:23 其他开发

为什么选择“ARM 体系结构的过程调用标准"?(AAPCS) 要求 SP 是 8 字节对齐的?

由于这是一个反复出现的话题,我提出了一个关于它的问题. 根据AAPCS:p> 5.2.1.1 通用堆栈约束 SP mod 4 = 0.堆栈必须始终与字边界对齐 5.2.1.2 公共接口的堆栈约束 SP mod 8 = 0.堆栈必须是双字对齐的. 8 字节对齐背后的原因是什么? 解决方案 可能的原因有很多; 需要它的工具. ldrd/strd 在某些架 ..
发布时间:2022-01-17 13:36:14 其他开发

Arm Assembly在子程序中PUSH POP链接寄存器和pc并在子程序中调用子程序的正确方法

对于 ARM 程序集 我在我的子程序中一直在做以下事情: 子程序:推 {r1,r2,lr}//改变r1和r2的代码流行音乐 {r1,r2,lr}bx lr 这是从子例程返回并继续执行主函数中的代码的正确方法吗?我在周围看到人们正在做以下事情: 子程序:推 {r1,r2,lr}//改变r1和r2的代码流行音乐 {r1,r2,pc}bx lr 但我不知道为什么你在按下 LR 时会弹出 P ..
发布时间:2022-01-17 13:35:56 其他开发

Linux 中的结构分配在 ARM 中失败,但在 x86 中成功

我注意到了一些非常奇怪的事情.假设我定义了以下结构 typedef 结构{uint32_t 一个;uint16_t b;uint32_t c;} 富; 这个结构包含在我从网络接收到的一个大缓冲区中. 以下代码适用于 x86,但我在 ARM 上收到 SIGBUS. extern void * 缓冲区;富我的富;my_foo = (( foo * ) 缓冲区)[0]; 用 memcpy ..
发布时间:2022-01-17 13:35:39 服务器开发

带有自动配置的 ARM 编译器

我正在尝试使用 autoconf 为 ARM 架构编译一些文件.我在 Ubuntu 12.04 中编译它们,目标系统是 BeagleBoard XM.我运行以下命令: ./configure --host=arm-linux-gnueabi -prefix=${CSTOOL_DIR}/linux_arm_tool 并得到这个结果: configure: 警告:如果你想设置 --build 类 ..
发布时间:2022-01-17 13:35:28 其他开发

在 iOS 上默认是 char 签名还是 unsigned?

char 在 iOS 上默认是有符号还是无符号? (我认为这是一个很好回答的问题,但奇怪的是,谷歌没有发现任何有用的东西!) 解决方案 在大多数情况下,char 在 ARM 上是未签名的(对于 性能原因)并在其他平台上签名. iOS 与 ARM 的常规约定不同,默认情况下为 char 签名.(特别是这与 Android 不同,where 代码在ndk中编译默认为无符号字符.) ..
发布时间:2022-01-17 13:35:22 移动开发