当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 1 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : gas的汇编问题
帖子发表于 : 2008-05-16 23:01 
头像

注册: 2006-12-22 21:50
帖子: 204
送出感谢: 0 次
接收感谢: 0 次
下面这段是来自<<Professional Assembly Language>>(汇编语言程序设计)的测试列出在处理器上找到SIMD特性的汇编代码:

# features.s -Determin MMX SSE SSE2 and SSE3 capabilites
.section .data
gotmmx:
.asciz "Supperts MMX"
gotsse:
.asciz "Supperts SSE"
gotsse2:
.asciz "Supperts SSE2"
gotsse3:
.asciz "Supperts SSE3"
output:
.asciz "%s\n"

.section .bss
.lcomm ecxdata,4
.lcomm edxdata,4

.section .text
.global _start
_start:
nop
movl $1,%eax
cpuid
movl %ecx,ecxdata
movl %edx,edxdata

test $0x00800000,%edx
jz done
pushl $gotmmx
pushl $output
call printf
addl $8,%edx

movl edxdata,%edx
test $0x02000000, %edx
jz done
pushl $gotsse
pushl $output
call printf
addl $8,%esp

movl edxdata,%edx
test $0x04000000, %edx
jz done
pushl $gotsse2
pushl $output
call printf
addl $8,%esp

movl edxdata,%edx
test $0x00000001, %edx
jz done
pushl $gotsse3
pushl $output
call printf
addl $8,%esp

done:
pushl $0
call exit

汇编后显示下面错误:
$as -o features.o features.s
features.s: Assembler messages:
features.s:0: Warning: end of file not at end of a line; newline inserted
features.s:28: Error: suffix or operands invalid for `push'
features.s:29: Error: suffix or operands invalid for `push'
features.s:36: Error: suffix or operands invalid for `push'
features.s:37: Error: suffix or operands invalid for `push'
features.s:44: Error: suffix or operands invalid for `push'
features.s:45: Error: suffix or operands invalid for `push'
features.s:52: Error: suffix or operands invalid for `push'
features.s:53: Error: suffix or operands invalid for `push'
features.s:58: Error: suffix or operands invalid for `push'

将pushl改为push后可以顺利汇编,但连接运行时显示:
$./features
段错误

还有Google上的都是pushl啊,求大侠解答.


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 1 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 2 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译