Chinaunix

标题: 关于总线错误的问题,求助!!!! [打印本页]

作者: thelordsaves    时间: 2012-03-22 22:38
标题: 关于总线错误的问题,求助!!!!
本帖最后由 thelordsaves 于 2012-03-22 22:41 编辑

看到有资料上说,如果访问的地址不满足地址对齐要求会发生总线错误,于是自己写了一个程序测试

#include <stdio.h>

typedef struct tagTEST
{
    unsigned short s1;
    unsigned short s2;
} TEST_S;

int main()
{
    int i = 0;

    for ( ;; )
    {
        TEST_S test;
        test.s1 = 65535;
        test.s2 = 0;
   
        char *pst = (char *)test;
        pst = pst + 1;
        unsigned char s3 = *(unsigned short *)pst;//通过这两步骤,让其地址不再是偶数的

        printf("%u\r\n", s3);
    }

    return 0;
}

这个死循环一直跑的都很正常,标记为红色的地方为什么不会出现使用unsigned short访问奇数地址的总线错误?
作者: hellioncu    时间: 2012-03-23 08:46
你要用PowerPC、UltraSparc等CPU,Intel的X86不会因此出错
作者: GFree_Wind    时间: 2012-03-23 13:48
这个跟CPU相关。你弄到ARM上,肯定会挂。

作者: thelordsaves    时间: 2012-03-24 11:42
能详细讲讲原因吗?回复 2# hellioncu


   
作者: hellioncu    时间: 2012-03-24 20:16
thelordsaves 发表于 2012-03-24 11:42
能详细讲讲原因吗?回复 2# hellioncu


CPU架构的问题,大概risc的会出错,cics的不会
作者: smalloc    时间: 2012-03-24 20:25
本帖最后由 smalloc 于 2012-03-24 20:32 编辑

没说一定会出错吧,有的处理器产生一个异常,然后用异常程序解决,所以应用程序中可能看不出来
人家说的总线错误是IO总线,没说是内存。
作者: AD8018    时间: 2012-03-24 22:12
我看到ARM上,这种情况就是错了,无异常。





欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2