diff --git a/homework/chapter3/README.md b/homework/chapter3/README.md new file mode 100644 index 0000000..200068c --- /dev/null +++ b/homework/chapter3/README.md @@ -0,0 +1,37 @@ +## 3.64 +A. $\&A[i][j][k]=x_A+L(i\cdot S\cdot T+j\cdot T+k)$; + +B. $R=7,S=5,T=13$。 + +## 3.68 +由汇编第 2 行可知,$A\in(4,8]$;由第 3 行可知,$B\in(6,10]$;由第 4 行可知,$A\cdot B\in(44,46]$。因此,$A=5,B=9$。 + +## 3.69 +A. 由汇编第 4 至 6 行可知,`a_struct` 大小为 40 字。再结合第 1 行可知 $CNT=7$; + +B. +由汇编第 6 至 8 行,`idx` 在 `x` 之前,类型均为 `long`(数组)。结合 `a_struct` 大小为 40 字,得到其声明如下: +```c +typedef struct { + long idx; + long x[4]; +} a_struct; +``` + +## 3.70 +A. +| 字段 | 偏移量 | +| --- | --- | +| `e1.p` | 0 | +| `e1.y` | 8 | +| `e2.x` | 0 | +| `e2.next` | 8 | + +B. 2 个 + +C. +```c +void proc (union ele *up) { + up->e2.x = *(up->e2.next->e1.p) - (up->e2.next->e1.y); +} +```