[汇编与C语言关系]4. 结构体和联合体

用反汇编的方法研究一下C语言的结构体:

#include <stdio.h>

int main(int argc, char ** argv)
{
struct {
char a;
short b;
int c;
char d;
} s; s.a = ;
s.b = ;
s.c = ;
s.d = ;
printf("%u\n", sizeof(s)); return ;
}

  main函数中几条语句的反汇编结果如下:

  aaarticlea/png;base64,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" alt="" />

  从访问结构体成员的指令可以看出,结构体的四个成员在栈上是这样排列的:

  aaarticlea/png;base64,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" alt="" />

  虽然栈是从高地址向低地址增长的,但结构体成员也是从低地址向高地址排列的,这一点和数组类似。与数组不同的是结构体成员之间不是一个紧挨一个排列的,中间有空隙,称为填充(Padding),不仅如此,在这个结构体的末尾也有三个字节的填充,所以sizeof(s)的值是12。printf的%u转换说明表示无符号数,sizeof的值是siez_t类型的,是某种无符号整形。

  为什么编译器要这样处理呢? 大多数计算机体系结构对于访问内存的指令是由限制的,在32位平台上,访问4字节的指令(比如上面的movl)所访问的内存地址应该是4的整数倍,访问两字节的指令(比如上面的movw)所访问的内存地址应该是两字节的整数倍,这称为对齐(Alignment)。如果指令所访问的内存地址没有正确对齐会怎么样呢?在有些平台上将不能访问内存,而是引发一个异常,在x86平台上倒是仍然能访问内存,但是不对齐的指令执行效率比对齐的指令要低,所以编译器在安排各种变量的地址时都会考虑到对齐的问题。对于本例中的结构体,编译器会把它的基地址对齐到4字节边界,也就是说ebp-0x10这个地址一定是4的整数倍。s.a占一个字节,没有对齐的问题。s.b占用两个字节,如果s.b紧挨在s.a后面,它的地址就不能是两字节的整数倍了,所以编译器会在结构体中插入一个填充字节。使s.b的地址也是两字节的整数倍。s.c占4字节,紧挨在s.b的后面就可以了,因为ebp-0xc这个地址也是4的整数倍。那么为什么s.d的后面也要有填充位填充到4字节边界呢?这是为了便于安排这个结构体后面的变量的地址,加入用这种结构体类型组成一个数组,那么后一个结构体只需和前一个结构体紧挨着排列就可以保证它的基地址仍然对齐到4字节边界了,因为在前一个结构体的末尾已经有了填充字节。合理设计结构体个成员的排列顺序可以节省存储空间,例如上例结构体可以改成如下:

struct {
char a;
char d;
short b;
int c;
} s;

  此外gcc提供了一种扩展语法可以消除结构体中的填充字节:

struct {
char a;
short b;
int c;
char d;
} __attribute__((packed)) s;

  这样就不能保证结构体成员对齐了,在访问b和c的时候可能会有效率问题。

  以前我们使用的数据类型都是占几个字节,最小的类型也要占一个字节,而在结构体中还可以使用Bit Field语法定义只占几个Bit的成员。

  

#include <stdio.h>
typedef struct {
unsigned int one:;
unsigned int two:;
unsigned int three:;
unsigned int four:;
unsigned int :;
unsigned int five:;
unsigned int six:;
} demo_type;
int main(void)
{
demo_type s = { , , , , , 0x81 };
printf("sizeof demo_type = %u\n", sizeof(demo_type));
printf("values: s=%u,%u,%u,%u,%u,%u\n", s.one, s.two, s.three,s.four, s.five, s.six);
return ;
}

  s这个结构体的布局如下所示:

  aaarticlea/png;base64,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BQWF2tpaKInH40NDQ8+cObN37145Obmamho4mD08PPzs2bN79+69d+9edXU1LEFHRkaCePfu3aqqKqiBSCRGR0efO3du79690tLSFRUVbDabSCTGxMScP39+z549UlJSiBgXFweihIREeXk5m80mkUiJiYkg3rlzp6ys7D19AZlMTklJuXDhwp49e0RFReEUWDKZnJaWduHChd27d4uIiBQXF0MNFAolMzPz4sWLu3fvFhISKioqAmfKysq6ePEiFxfXzZs3CwoKWCwWhULJyckBUVBQMD8/H8S8vLxLly5xcXFdv34dRA6HQ6PRCgoKeHh4uLi4BAQE8vLyWCwWjUYrLCwEkZ+fPycn583uAKxl1apVBw4c4Obm3rx5c0REBPLs/Px8eXn55cuXd+3adfny5aysLBaLRafTKysrr1y58ssvv1y6dCkjIwPE6urqq1ev7tq16+LFi+np6fBaDAajtrYW9N9//z0tLY3FYjEYjPr6el5e3p07d547dw5EJpPZ2NjIx8e3c+fOM2fOpKSkQLWPHz8+ceLEV199FRAQ8H5rYbFYra2t/Pz8O3fuPHHiRFJSEpPJZLPZ7e3tAgICO3fuPH78eEJCAiJev34dxLi4uJGREbAWOzu7s2fPfvHFFy9evEDudTo7O4WEhH755Zfjx49D5j42m93Z2SksLLxr165jx47BwU3wEXd2doqKiv7yyy/Hjh0LDw8HM+vq6hITE+Pi4vrtt9/CwsIQf3qT7u5uCQmJ3bt3//bbb8HBwSQSCUp2d3dLSUnt2bPnt99+CwoKAt3Hx+fKlSurV6+2tbXF4/FgLWlpaXfv3t2zZw83N7e/vz8ej4caent75eTk9u7dy83N7evre/z48ZUrVyorK1+5cmXt2rVWVlbIEVV9fX2Kior79u07evSop6fnzMwMm83u7+9XUlLav38/Nze3h4cH5DR7149iYGBAXV19//79R48edXNzm5ycZLPZ4eHhN27c+Pbbbw0NDUdHR8FaVq9effjw4Q0bNujr64+MjCA1DA0N6ejoHDx48MiRI5Bqhc1mDw0N6enpHTp06Ndff3V0dMRisSDq6+sfOnToyJEjT58+BZHD4QwPDxsZGR0+fPjIkSP29vaQPGZkZMTExOTw4cOHDx9+/Pjx8PDwu65iZGTEzMzsyJEjR44csbW1HRwchJJYLNbS0vLX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" alt="" />

  Bit Field成员的类型可以是int或unsigned int, 表示有符号数或无符号数,但不表示它像普通的int型一样站4个字节,它后面的数字是几就表示它占多少个Bit,也可以像unsigned int:2这样定义一个未命名的Bit Field,即使不写未命名的Bit Field,编译器也有可能在两个成员之间插入填充位,如上图的five和six之间,这样six这个成员就刚好单独占一个字节了,访问效率会比较高,这个结构体的末尾还填充了3个字节,以便对齐到4字节边界。x86的Byte Order是小端的,从上图中one和two的排列顺序可以看出,如果对一个字节再细分,则字节中的Bit Order也是小端的,因为排在结构体前面的成员(靠近低地址一边的成员)取字节中的低位。Bit Field在驱动程序中是很有用的,因为经常需要单独操作设备寄存器中的一个或几个Bit。

上一篇:python 找出字符串中出现次数最多的字母


下一篇:关于TCP主动关闭连接中的wait_timeout