首页 > 解决方案 > gcc 8.2:错误:无效的“asm”:无效的地址模式

问题描述

以下语句取自 iPXE。它可以在 gcc 7.3 上正常编译,但在 aarch64 架构上使用 gcc 8.2 时会失败。在这里我得到一个错误

error: invalid 'asm': invalid address mode

宏参数 einfo 是 5 个参数的列表。

#define __einfo_error( einfo ) ( {          
    __asm__ ( ".section \".einfo\", \"\", " PROGBITS_OPS "\n\t"     \
              ".align 8\n\t"                                        \
              "\n1:\n\t"                                            \
              ".long ( 4f - 1b )\n\t"                               \
              ".long %a0\n\t"                                       \
              ".long ( 2f - 1b )\n\t"                               \
              ".long ( 3f - 1b )\n\t"                               \
              ".long %a1\n\t"                                       \
              "\n2:\t.asciz \"" __einfo_desc ( einfo ) "\"\n\t"     \
              "\n3:\t.asciz \"" __FILE__ "\"\n\t"                   \
              ".align 8\n\t"                                        \
              "\n4:\n\t"                                            \
              ".previous\n\t" : :                                   \
              "i" ( __einfo_errno ( einfo ) ),                      \
              "i" ( __LINE__ ) );                                   \

标签: gccarm64

解决方案


推荐阅读