gcc - 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__ ) ); \
从哪里做
.long %a0
取其值?
- “i”语句在做什么?
- 这种语法的参考在哪里?- gcc 8.2 改变了吗?
解决方案
推荐阅读
- r - 如何按 id 应用 grep() 数据
- javascript - 用jquery刷新python列表标签的值
- python - 将scrapy内置记录器设置在与用户代码记录器不同的级别
- swift - 在 NSTableView 中扩展行
- python - knitr:在乳胶中的python代码中升级到1.20版后忽略空行
- reactjs - 对未安装组件中的 setState 做出反应警告
- angular - 在Angular 4中选中复选框时启用输入字段
- html - CSS - 如何在 3 层中正确添加 3 张图像
- php - 使用 PHP 执行 shell 命令
- c++ - Windows 10 上的 CMake 不会生成可执行文件