假设给你个任务,检查一下C编译器为结构和联合的访问产生正确的代码。你写了下面的结构声明:
typedef union { struct { long u; short v; char w; } tl; struct { int a [2]; char *p; } t2; } u.type;
你写了一组具有下面这种形式的函数:
void get (u_type *up,type *dest) { *dest =expr; }
这组函数有不一样的访问表达式expr,而且根据expr的类型来设置目的数据类型^扣。 然后再检查编译这些函数时产生的代码,看看它们是否与你预期的一样。
假设在这些函数中,up和dest分别被加载到寄存器%rdi *%rsi中。填写下表中的数据类型^批,并用1〜3条指令序列来计算表达式,并将结果存储到dest中。