请高手来解释下 此error

sonland 2010-12-31 04:59:05
check_asm asmalign_pot ".align 3"
check_as
BEGIN /tmp/ffconf.KJK11117.c
1 void foo(void){ __asm__ volatile(".align 3"); }
END /tmp/ffconf.KJK11117.c
gcc -D_ISOC99_SOURCE -D_POSIX_C_SOURCE=200112 -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -DPIC -fPIC -g -c -o /tmp/ffconf.Rsc11126.o /tmp/ffconf.KJK11117.c
/tmp/ffconf.KJK11117.c: Assembler messages:

/tmp/ffconf.KJK11117.c:1: Error: alignment not a power of 2

有点看不大懂 __asm__ volatile(".align 3"); 这句是什么意思

__asm__ volatile 这个是宏吗?做什么用的

.align 3 这个参数传进去干什么的

环境: RHEL 5.4 gcc 4.6.0
...全文
93 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
yutaooo 2011-01-01
  • 打赏
  • 举报
回复

__asm__ volatile()
这个是gcc中,嵌入汇编代码的写法。其中volatile用作禁止编译器优化。

.align是一个汇编指示符。是AT&T格式汇编中的内容,表示对齐。我看了LZ代码的上下文,估计这里是希望按照8字节边界对齐。我记得,gcc中使用的这个.align n,它所代的参数有2种解释。第一种是2的n次方,也就是地址最后n位必须为0。第二种,表示字节数。似乎,gcc的各个版本中,要么采取第一种解释,要么第二种。因此算是有歧义的。

既然,.align 3被认为是错误了。建议楼主使用.align 8试试看,也许这个版本的gcc采用了第二种解释。

这里写的内容完全凭影像,没有去查,建议楼主查查gcc手册,和AT&T汇编的相关文档。
wesleyluo 2010-12-31
  • 打赏
  • 举报
回复
看不懂啊!
小魔菇 2010-12-31
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 sonland 的回复:]

是最新版的 ffmepg
[/Quote]
还有.align 3这种写法 貌似是a.out文件格式的写法
现在都不用指数了
sonland 2010-12-31
  • 打赏
  • 举报
回复
是最新版的 ffmepg
小魔菇 2010-12-31
  • 打赏
  • 举报
回复
这个程序是不是很老啊?~
sonland 2010-12-31
  • 打赏
  • 举报
回复
在线等~~

23,116

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧