You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Cortex-M4是否支持LDRD/STRD指令?GCC 13.2编译生成该指令存疑

关于Cortex-M4下GCC生成LDRD/STRD指令的解答

首先纠正一个认知偏差:Cortex-M4内核(基于ARMv7E-M架构)的Thumb-2指令集完全支持LDRD/STRD指令,你之前查阅的资料大概率混淆了不支持该指令的Cortex-M0/M0+系列内核。

具体解释:

  • LDRD/STRD是Thumb-2扩展中的64位加载/存储指令,可一次性操作两个32位寄存器对,完成64位数据的内存读写。对于uint64_t这类64位类型的赋值操作,相比两条独立的32位LDR/STR指令,它能减少指令数量、提升执行效率。
  • 你的编译选项明确指定了目标内核为Cortex-M4(-mcpu=cortex-m4)、架构为ARMv7E-M(-march=armv7e-m+fp),GCC会精准匹配目标硬件的指令集支持;再加上-O3的高优化级别,编译器会自动选择最高效的指令实现64位数据传输,因此生成了LDRD/STRD汇编代码。
  • 额外注意:LDRD/STRD要求访问的内存地址必须是8字节对齐的,但GCC在编译uint64_t类型变量时,会自动保证其满足对齐要求,无需手动处理。

内容的提问来源于stack exchange,提问作者wimalopaan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 19:48:18