在大端机器(solaris-sparc,hpux-hppa)上从奇数内存地址取一个整形(2 or 4 bytes)会崩溃.如: unsigned short Res = *(unsigned short *) tmpArray; 应该: char tmpArray[sizeof(unsigned short)] = {0}; for(int i = 0; i < sizeof(unsigned short); ++i) { tmpArray[i] = *(pcNewHdr + i); } uns
处理器的乱序和并发执行 目前的高级处理器,为了提高内部逻辑元件的利用率以提高运行速度,通常会采用多指令发射.乱序执行等各种措施.现在普遍使用的一些超标量处理器通常能够在一个指令周期内并发执行多条指令.处理器从L1 I-Cache预取了一批指令后,就会分析找出那些互相没有关联可以并发执行的指令,然后送到几个独立的执行单元进行并发执行.比如下面这样的代码(假定编译器不做优化): z = x + y;p = m + n; CPU就有可能将这两行无关代码分别送到两个算术单元去同时执行.像Freescal