免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 5400 | 回复: 3
打印 上一主题 下一主题

gas汇编操作符出错 [复制链接]

|

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-07-27 01:22 |只看该作者 |倒序浏览
  1. as -g aaatest.s -o aaatest.o
  2. aaatest.s: Assembler messages:
  3. aaatest.s:19: Error: `aaa' is not supported in 64-bit mode
  4. make: *** [aaatest.o] 错误 1
  5. as -g adctest.s -o adctest.o
  6. adctest.s: Assembler messages:
  7. adctest.s:18: Error: suffix or operands invalid for `push'
  8. adctest.s:19: Error: suffix or operands invalid for `push'
  9. adctest.s:23: Error: suffix or operands invalid for `push'
  10. make: *** [adctest.o] 错误 1
  11. as -g cpuidtest.s -o cpuidtest.o
  12. cpuidtest.s: Assembler messages:
  13. cpuidtest.s:11: Error: suffix or operands invalid for `pushf'
  14. cpuidtest.s:12: Error: suffix or operands invalid for `pop'
  15. cpuidtest.s:15: Error: suffix or operands invalid for `push'
  16. cpuidtest.s:16: Error: suffix or operands invalid for `popf'
  17. cpuidtest.s:17: Error: suffix or operands invalid for `pushf'
  18. cpuidtest.s:18: Error: suffix or operands invalid for `pop'
  19. cpuidtest.s:22: Error: suffix or operands invalid for `push'
  20. cpuidtest.s:25: Error: suffix or operands invalid for `push'
  21. cpuidtest.s:28: Error: suffix or operands invalid for `push'
  22. cpuidtest.s:31: Error: suffix or operands invalid for `push'
  23. make: *** [cpuidtest.o] 错误 1
  24. .............................
复制代码
因为刚学汇编还有很多东西不知道
以上是Professional Assembly Language 书中第八章的代码编译后的结果
第一个编译的文件报的好像是aaa操作符64位不支持
但是为什么push,pop等一些操作符也报错呢
不知道是不是跟CPU和系统有关
下面是我随便复制的一个错误程序的代码
  1. # adctest.s - An example of using the ADC instruction
  2. .section .data
  3. data1:
  4.    .quad 7252051615
  5. data2:
  6.    .quad 5732348928
  7. output:
  8.    .asciz "The result is %qd\n"
  9. .section .text
  10. .globl _start
  11. _start:
  12.    movl data1, %ebx
  13.    movl data1+4, %eax
  14.    movl data2, %edx
  15.    movl data2+4, %ecx
  16.    addl %ebx, %edx
  17.    adcl %eax, %ecx
  18.    pushl %ecx
  19.    pushl %edx
  20.    push $output
  21.    call printf
  22.    addl $12, %esp
  23.    pushl $0
  24.    call exit
复制代码
CPU信息
  1. processor       : 0
  2. vendor_id       : AuthenticAMD
  3. cpu family      : 15
  4. model           : 72
  5. model name      : AMD Turion(tm) 64 X2
  6. stepping        : 2
  7. cpu MHz         : 800.000
  8. cache size      : 512 KB
  9. physical id     : 0
  10. siblings        : 2
  11. core id         : 0
  12. cpu cores       : 2
  13. fpu             : yes
  14. fpu_exception   : yes
  15. cpuid level     : 1
  16. wp              : yes
  17. flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt rdtscp lm 3dnowext 3dnow pni cx16 lahf_lm cmp_legacy svm cr8_legacy
  18. bogomips        : 1609.83
  19. TLB size        : 1024 4K pages
  20. clflush size    : 64
  21. cache_alignment : 64
  22. address sizes   : 40 bits physical, 48 bits virtual
  23. power management: ts fid vid ttp tm stc

  24. processor       : 1
  25. vendor_id       : AuthenticAMD
  26. cpu family      : 15
  27. model           : 72
  28. model name      : AMD Turion(tm) 64 X2
  29. stepping        : 2
  30. cpu MHz         : 800.000
  31. cache size      : 512 KB
  32. physical id     : 0
  33. siblings        : 2
  34. core id         : 1
  35. cpu cores       : 2
  36. fpu             : yes
  37. fpu_exception   : yes
  38. cpuid level     : 1
  39. wp              : yes
  40. flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt rdtscp lm 3dnowext 3dnow pni cx16 lahf_lm cmp_legacy svm cr8_legacy
  41. bogomips        : 1609.83
  42. TLB size        : 1024 4K pages
  43. clflush size    : 64
  44. cache_alignment : 64
  45. address sizes   : 40 bits physical, 48 bits virtual
  46. power management: ts fid vid ttp tm stc
复制代码
系统是
Linux SuSe 2.6.18.2-34-default #1 SMP Mon Nov 27 11:46:27 UTC 2006 x86_64 x86_64 x86_64 GNU/Linux

[ 本帖最后由 | 于 2007-7-27 01:26 编辑 ]
|

论坛徽章:
0
2 [报告]
发表于 2007-07-27 09:52 |只看该作者
如果有知道问题出在那了
请告诉一下谢谢!!!

论坛徽章:
0
3 [报告]
发表于 2007-07-27 09:54 |只看该作者
eax改成rax,其它类似

pushl改成pushq,再看看?

论坛徽章:
0
4 [报告]
发表于 2007-07-27 09:56 |只看该作者
或者给as加上选项--32,或 -mtune=athlon_xp等,把汇编弄成32位的
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP