尝试在TC里实现MIPS架构,但是参考书里的指令是大端序的,而TC里的8+位数是小端序的。
于是不做了,摆了
话说其实挺奇怪,我们日常使用数字都是大端序。低位在后面,高位在前面,所以第0位反而是正着读的最后一位。
不过想来这也说得通,因为在我们的世界里,测量值更多是对数正态分布的,在常用数制下:
位数信息强于高位信息
高位信息强于低位信息
所以把高位信息放到了前面。
而计算机中的内存可以看成一条很长的纸带,抓住纸带一头开始向后数,因此计算机里第0位更多时候被认为是前面的。
所以 x86, arm 默认小端序,以便测试,你可以尝试一份 C++ 代码:
#include<iostream>
using namespace std;
int main(){
int n=1;
char *p = (char*)&n;
for(int i=0;i<4;i++)
cout<<(int)*(p+i)<<' ';
return 0;
}不出意料的话,它应该会输出 1 0 0 0
也就是低位在前,高位在后,是小端序。
不过网络中常常会使用大端序,所以自己写底层代码解包网络协议时一定要注意。
最近在玩 Turing Complete,之后可能会在博客里会放一些我的过关解法。