読者です 読者をやめる 読者になる 読者になる

いんてるすげええええ

c/c++

いや、メモリの奇数番地からshortで値を読み書きしたときって普通は「異常値」になると認識していたのですが、
IntelCPUはそんなことなく、ふつーに値が読めるらしい。

おろどきもものきさんしょのき。

    char data[10] = {
        0,0xff,0xff,0,0,0,0,0,0,0,
    };
    
    unsigned short* value = (unsigned short*)&data[1];
    
    printf("0x%x(%d)", value, *value );

    *value = 1000;

これ、IntelCPUだと動くんだねぇ。
ARM7だとだめだめです。
奇数番地から読む場合は、上位バイト、下位バイトをそれぞれとって、
シフトして|するしかないので、なんだか驚いた。
もしかしていまのCPUは当たり前なのかしらん。
や、ARM9でも駄目だったけど。

ということで、移植性を考えると奇数番地にshortやintなどを読み書きするのは駄目です。