求解gcc编译c内联汇编标号报错的一个问题

发布于 2021-11-27 20:20:17 字数 800 浏览 822 评论 3

使用gcc编译c语言内联汇编使用-O优化时,是标号部分报错,请问有知道怎么解决的吗?

unsigned long strcpy0(char* dst,const char* src)
{
	__asm__ __volatile__
		(
		 ".intel_syntax noprefixn"
		 "POS2:n"
		 "lodsbn"
		 "stosbn"
		 "test al,aln"
		 "jnz POS2n"
		 :
		 :
		 :"rax","rbx"
		 );
}
报错信息如下:

gcc -masm=intel -O3 -c -o test.o test.c

test.c: Assembler messages:

test.c:7: Error: symbol `POS2' is already defined

test.c:7: Error: symbol `POS2' is already defined

test.c:7: Error: symbol `POS2' is already defined

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

岁月打碎记忆 2021-12-03 23:04:45

引用来自“中山野鬼”的评论

这事帮不了了。刚才随手测了一下,我的gcc 直接make是可以的。 如果用你上面的命令 -masm=intel 参数无法识别。。哈。 我的 gcc -v 的信息如下:

Configured with: --prefix=/Library/Developer/CommandLineTools/usr --with-gxx-include-dir=/usr/include/c++/4.2.1

Apple LLVM version 6.0 (clang-600.0.57) (based on LLVM 3.5svn)

Target: x86_64-apple-darwin13.1.0

Thread model: posix

猫九 2021-12-02 22:34:23

好的,谢谢你,查找了好长时间没有找到解决办法

海之角 2021-12-02 08:27:08

这事帮不了了。刚才随手测了一下,我的gcc 直接make是可以的。 如果用你上面的命令 -masm=intel 参数无法识别。。哈。 我的 gcc -v 的信息如下:

Configured with: --prefix=/Library/Developer/CommandLineTools/usr --with-gxx-include-dir=/usr/include/c++/4.2.1

Apple LLVM version 6.0 (clang-600.0.57) (based on LLVM 3.5svn)

Target: x86_64-apple-darwin13.1.0

Thread model: posix

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文