[求助]试过了好多次没编译成功,win7_mingw32_汇编

aauutthh 2015-06-12 03:05:33
代码如下:
.section .data
output1: .ascii "not "
output2: .asciz "support sse42\n"
.equ len1 , .-output1
.equ len2 , .-output2
.equ FEATURE , 0x100000

.section .text
.globl _start
_start:
pushl %ebp
movl %esp , %ebp

movl $1 , %eax
cpuid
test FEATURE , %ecx
movl $output2 , %eax
jnz _write
movl $output1 , %eax

_write:
pushl %eax
#call printf
# 在mingw里 , printf 换为 _printf
call _printf

movl %ebp , %esp
popl %ebp
ret


在linux 下编译: x86_64 GNU/Linux , gcc version 4.4.7 20120313 (Red Hat 4.4.7-3) 下:
as -o t1.o t1.s -32
ld -dynamic-linker /lib/ld.linux.so.2 -o t1.out t1.o -m elf_i386 -lc
可以编译通过.

在win7 64-bit系统, 安装 mingw32 32位编译环境 gcc version 4.8.1 (GCC) 下
as -gstabs -o t1.o t1.s -32
ld -g -o t1.out t1.o -m i386pe -lwow32 -lmsvcrt
编译通过.但在gdb时报错:

warning: `C:\Windows\SYSTEM32\ntdll.dll': Shared library architecture i386:x86-64 is not compatible with target architecture i386.
warning: `C:\Windows\SYSTEM32\wow64.dll': Shared library architecture i386:x86-64 is not compatible with target architecture i386.
warning: `C:\Windows\SYSTEM32\wow64win.dll': Shared library architecture i386:x86-64 is not compatible with target architecture i386.
warning: `C:\Windows\SYSTEM32\wow64cpu.dll': Shared library architecture i386:x86-64 is not compatible with target architecture i386.
warning: Could not load shared library symbols for WOW64_IMAGE_SECTION.
Do you need "set solib-search-path" or "set sysroot"?
warning: Could not load shared library symbols for WOW64_IMAGE_SECTION.
Do you need "set solib-search-path" or "set sysroot"?
warning: Could not load shared library symbols for NOT_AN_IMAGE.
Do you need "set solib-search-path" or "set sysroot"?
warning: Could not load shared library symbols for NOT_AN_IMAGE.
Do you need "set solib-search-path" or "set sysroot"?
gdb: unknown target exception 0x4000001f at 0x401000


大神求解.谢谢.

...全文
1375 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
水墨风光 2016-04-25
  • 打赏
  • 举报
回复
用64位gdb调试。
aauutthh 2016-04-18
  • 打赏
  • 举报
回复
引用 9 楼 DelphiGuy 的回复:
提示信息很明确,solib查找路径没设置对,你的程序编译为32位的,找到的Shared library是64位的。
恩,回过头来看,确实是设环境变量就可以解决。
csdnxinshou2 2016-04-18
  • 打赏
  • 举报
回复
引用 4 楼 aauutthh 的回复:
[quote=引用 3 楼 mydo 的回复:] 许久没在win上写汇编鸟
谢谢版主关注. 看过完全gnu/linux工作这篇文章后,觉得很有道理. 微软的东西太烂,高手不用. 新手遇到问题也找不到解决方法. linux遇到的问题都能比较快被解答. [/quote] linux远不如windows技术高。
  • 打赏
  • 举报
回复
提示信息很明确,solib查找路径没设置对,你的程序编译为32位的,找到的Shared library是64位的。
善良的小伙伴 2015-07-22
  • 打赏
  • 举报
回复
把汇编语言翻译成机器码,不叫编译吧,应该叫“汇编”!!
大熊猫侯佩 2015-06-25
  • 打赏
  • 举报
回复
建议先跳过,先学其他的
aauutthh 2015-06-24
  • 打赏
  • 举报
回复
引用 5 楼 mydo 的回复:
也不一定。关键是windows和linux差异性太大。不像unix和linux之间,甚至os x和unix之间。
版主, 这贴看来是注定没人关注了. 无解了.
大熊猫侯佩 2015-06-22
  • 打赏
  • 举报
回复
许久没在win上写汇编鸟
大熊猫侯佩 2015-06-22
  • 打赏
  • 举报
回复
也不一定。关键是windows和linux差异性太大。不像unix和linux之间,甚至os x和unix之间。
aauutthh 2015-06-22
  • 打赏
  • 举报
回复
引用 3 楼 mydo 的回复:
许久没在win上写汇编鸟
谢谢版主关注. 看过完全gnu/linux工作这篇文章后,觉得很有道理. 微软的东西太烂,高手不用. 新手遇到问题也找不到解决方法. linux遇到的问题都能比较快被解答.
aauutthh 2015-06-15
  • 打赏
  • 举报
回复
再求大神指点... 跪谢.
aauutthh 2015-06-13
  • 打赏
  • 举报
回复
求大神来指点下....

21,458

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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