赋值表达式的语法树-运维平台监控系统告警收敛的算法研究与应用

图5.17赋值表达式的语法树对于赋值语句“a = b;”来说,当a是结构体位域成员时,对a的写操作会较复杂。下面我们还是举一个例子来说明。以下结构体对象dt中的位域b1、b2、b3和b4共占用32位内存(即4字节),其所处偏移为4,在中间代码层次,我们可用符号“dt[4]”来表示该内存单元。 struct Data{ int a; //偏移为0 //以下各成员构成的二进制位串为“b4_b3_b2_b1”, //其中,低8位为b1,高4位为b4 int b1:8; //偏移为4,pos为0 int b2:16; //偏移为4,pos为8 int b3:4; //偏移为4,pos为24 int b4:4; //偏移为4,pos为28 int d; //偏移为8 } dt; struct Data * ptr = &dt; ptr->d = 30; dt.b2 = val;当C程序员要通过“dt.b2 = val;”来对位域b2进行赋值时,我们可按以下步骤来实现: (1)按以下中间代码来构造二进制位串“b4_b3_val_b1”。 t1: val
pdf 文件大小:7.08MB