免费注册 查看新帖 |

Chinaunix

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

[C++] [SPARC] 大家看看这段汇编码有没有字节不对齐的情况 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-05-13 12:22 |只看该作者 |倒序浏览
5可用积分
(gdb) disassemble 0xfd8570a4
Dump of assembler code for function _ZNK7log4cxx6Logger19getLoggerRepositoryEv:
0xfd857088 <_ZNK7log4cxx6Logger19getLoggerRepositoryEv+0>:      save  %sp, -112, %sp
0xfd85708c <_ZNK7log4cxx6Logger19getLoggerRepositoryEv+4>:      ld  [ %i0 + 0x1c ], %o4
0xfd857090 <_ZNK7log4cxx6Logger19getLoggerRepositoryEv+8>:      ld  [ %fp + 0x40 ], %i0
0xfd857094 <_ZNK7log4cxx6Logger19getLoggerRepositoryEv+12>:     cmp  %o4, 0
0xfd857098 <_ZNK7log4cxx6Logger19getLoggerRepositoryEv+16>:     be  0xfd8570b8 <_ZNK7log4cxx6Logger19getLoggerRepositoryEv+48>
0xfd85709c <_ZNK7log4cxx6Logger19getLoggerRepositoryEv+20>:     st  %o4, [ %i0 ]
0xfd8570a0 <_ZNK7log4cxx6Logger19getLoggerRepositoryEv+24>:     ld  [ %o4 ], %g1
0xfd8570a4 <_ZNK7log4cxx6Logger19getLoggerRepositoryEv+28>:     ld  [ %g1 + -36 ], %o0
0xfd8570a8 <_ZNK7log4cxx6Logger19getLoggerRepositoryEv+32>:     ld  [ %o4 + %o0 ], %o5
0xfd8570ac <_ZNK7log4cxx6Logger19getLoggerRepositoryEv+36>:     ld  [ %o5 + 0xc ], %g1
0xfd8570b0 <_ZNK7log4cxx6Logger19getLoggerRepositoryEv+40>:     call  %g1
0xfd8570b4 <_ZNK7log4cxx6Logger19getLoggerRepositoryEv+44>:     add  %o4, %o0, %o0
0xfd8570b8 <_ZNK7log4cxx6Logger19getLoggerRepositoryEv+48>:     jmp  %i7 + 0xc
0xfd8570bc <_ZNK7log4cxx6Logger19getLoggerRepositoryEv+52>:     restore
End of assembler dump.

寄存器的值如下:

> ::regs
%g0 = 0x00000000                 %l0 = 0x00000005
%g1 = 0x0090f3f0                 %l1 = 0xfc4fbc08
%g2 = 0x00000000                 %l2 = 0xfc4fbc88
%g3 = 0x00000000                 %l3 = 0xfc4fbd08
%g4 = 0x00000000                 %l4 = 0x00000000
%g5 = 0x00000000                 %l5 = 0xfe230c00
%g6 = 0x00000000                 %l6 = 0x00000000
%g7 = 0xfe230c00                 %l7 = 0x00000000
%o0 = 0x225eb06a                 %i0 = 0xfc4fba68
%o1 = 0x00000000                 %i1 = 0xfc4fbc08
%o2 = 0x00000000                 %i2 = 0xfc4fbc88
%o3 = 0xfc4fbc88                 %i3 = 0xfc4fbd08
%o4 = 0x000e07b8                 %i4 = 0xfc4fba68
%o5 = 0x00000000                 %i5 = 0x00000001
%o6 = 0xfc4fb998                 %i6 = 0xfc4fba08
%o7 = 0xfcede6a8 libthread.so.1`select+0x6c %i7 = 0xfe7cdd4c

是Solaris 9上的应用程序崩溃了,偶是初学者,看不懂。。。

论坛徽章:
0
2 [报告]
发表于 2009-05-13 13:26 |只看该作者
汇编看着太累啊

论坛徽章:
0
3 [报告]
发表于 2009-05-13 13:40 |只看该作者

回复 #2 ziggler 的帖子

是啊,哎哎,ld指令会不会导致SIGBUS?

论坛徽章:
0
4 [报告]
发表于 2009-05-14 08:40 |只看该作者

回复 #1 th0r 的帖子

buserror 小弟知道总线寻址的时候有时候会出现。也就是强制转换的时候,如果起始地址是奇地址,很有可能出现。
既然都大概知道在哪儿出错了,跟一下不就行了,你就单独把那断代码拿出来,测一下。
或者,你看看有没有强制转换的地方,改一下。改成memcpy。
不过,小弟觉得,楼主大大这么使gdb很让人头大。跟core文件不就行了。
把你的代码全部静态编译,加-static选项,然后跟踪core。
试试,楼主大大。但愿对你有帮助。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP