大小端

  1. LSB:最低有效字节,俗称 “低位
  2. 大端序:高位在前,低位在后
  3. 小端序:低位在前,高位在后
例子

  • 数据: 12345678H
  • 最低有效字节 LSB = 78H,无论大小端
1
2
3
地址 0x1200 0x1201 0x1202 0x1203
大端     12     34     56     78
小端     78     56     34     12
记忆

计算机不是法外之地,人民至上,符合人类习惯的是 “大”

Warning

  1. 按边界对齐 每个类型 T 的偏移量只能是 sizeof(T) 的整数倍 e.g.
1
2
3
4
5
struct {
  int a;    //  offset = 0
  char b;   //  offset = 4
  short c;  //* offset = 6 != 5
};
  1. 指令立即数 & 大小端序 指令中的立即数也按端序直接存放 e.g. 立即数 imm = 0x11223344 则指令中 opcode 44 33 22 11