微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

错误:'asm' 操作数有不可能的约束 (A53) - gcc 9.3.1

如何解决错误:'asm' 操作数有不可能的约束 (A53) - gcc 9.3.1

这是读取 64 位地址空间的代码。 gcc 9.3.1 出现问题,gcc 早期版本没有问题

    static inline void write_to_64bit_address(uint64_t address,uint32_t data) {
    uint32_t address_upper = (uint32_t)(address >> 32);
    uint32_t address_lower = (uint32_t)(address);
    uint32_t smc_code = SMC_LONG_ADDRESS_WRITE_SINGLE;
    asm volatile("mov r0,%[smc_code]\n"
                 "mov r1,%[addr_upper]\n"
                 "mov r2,%[addr_lower]\n"
                 "mov r3,%[data_all]\n"
                 "mov r4,%[smc_zero]\n"
                 "mov r5,%[smc_zero]\n"
                 "mov r6,%[smc_zero]\n"
                 "smc #0\n"
                 :
                 : [smc_code] "r"(smc_code),[addr_upper] "r"(address_upper),[addr_lower] "r"(address_lower),[data_all] "r"(data),[smc_zero] "g"(SMC_ZERO)
                 : "r0","r1","r2","r3","r4","r5","r6");
}

我也不了解这个程序集和学习。有人可以帮忙吗。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。