首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >clang汇编程序错误:指令的操作数大小不明确

clang汇编程序错误:指令的操作数大小不明确
EN

Stack Overflow用户
提问于 2019-05-02 03:04:13
回答 1查看 1.9K关注 0票数 1

我正在尝试使用clang构建锡元,并在程序集代码上遇到错误。我可以修复简单的操作(移除..func/..endfunc),但是添加和子程序上的“指令操作数”错误超过了我的最小装配技能。我在回购上发布了一个问题,但有可能它已经不再被维护了。

使用此源文件 (移除..func/..endfunc),我得到以下错误:

$ clang-8 x86-sse2.S /tmp/x86-sse2-dbaa71.s:86:9: error: ambiguous operand size for instruction 'add' add SRC, 64 ^~~ /tmp/x86-sse2-dbaa71.s:87:9: error: ambiguous operand size for instruction 'add' add DST, 64 ^~~ /tmp/x86-sse2-dbaa71.s:88:9: error: ambiguous operand size for instruction 'sub' sub SIZE, 64 ^~~~ ...

我看了这个答案,它看起来很相似,但是我无法将它转换成对这些指令的回答。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-02 03:23:07

我可以修复简单的(删除..func/..endfunc的)

.func宏包括一个.set SRC, rsi,它根据适当的调用约定(x86-64SystemV、x64或32位堆栈args)定义寄存器。

删除它只留下一个未定义的SRC符号,当然,该符号被视为内存操作数。(而且add mem, imm没有任何一个操作数表示操作数大小,因此它是不明确的。)

你的“修正”引入了这个bug。

使用来使用系统汇编程序,而不是clang的内置汇编程序。就像预期的那样,在我的Linux桌面上使用clang7.0.1很好地构建https://github.com/letrout/tinymembench/blob/master/x86-sse2.S。(和系统汇编程序= GNU Binutils as 2.31.1)

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55945153

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档