struct wow { int i; int a[4]; }; struct wow test[9]; { test[7].a[3] = test[7].i; } 1: AST_TAG "wow" (c[2].s) [[typeinfo=0]] 5: AST_SEQ [30] [-1] [[typeinfo=0]] 10: AST_TYPE_Atom 0 4 [[typeinfo=0]] 15: AST_TAG "i" (c[10].s) [[typeinfo=0]] 19: AST_Dummy -1 15 -1 [[typeinfo=0]] 25: AST_SEQ [19] [-1] [[typeinfo=0]] 30: AST_Declare [15] [10] [-1] [[typeinfo=0]] 36: AST_TYPE_Atom 0 4 [[typeinfo=0]] 41: AST_TAG "a" (c[17].s) [[typeinfo=0]] 45: AST_Const 19 4 [[typeinfo=0]] 50: AST_TYPE_Atom 0 4 [[typeinfo=0]] 55: AST_TYPE_ArrayOf [36] [50] 0 45 -1 [[typeinfo=0]] 63: AST_Declare [41] [55] [-1] [[typeinfo=0]] 69: AST_TYPE_StructMember [-1] [41] [55] -1 [[typeinfo=0]] 76: AST_TYPE_StructMember [69] [15] [10] -1 [[typeinfo=0]] 83: AST_TYPE_Struct 1 [76] -1 [[typeinfo=0]] 89: AST_TAG "wow" (c[29].s) [[typeinfo=0]] 93: AST_TYPE_Struct 89 [-1] -1 [[typeinfo=0]] 99: AST_TAG "test" (c[31].s) [[typeinfo=0]] 103: AST_Const 33 9 [[typeinfo=0]] 108: AST_TYPE_Atom 0 4 [[typeinfo=0]] 113: AST_TYPE_ArrayOf [93] [108] 0 103 -1 [[typeinfo=0]] 121: AST_Declare [99] [113] [-1] [[typeinfo=0]] 127: AST_Scope [194] -1 2 [[typeinfo=0]] 133: AST_TAG "test" (c[42].s) [[typeinfo=0]] 137: AST_Const 44 7 [[typeinfo=0]] 142: AST_TAG "a" (c[47].s) [[typeinfo=0]] 146: AST_Const 49 3 [[typeinfo=0]] 151: AST_Idx [156] [146] [[typeinfo=0]] 156: AST_Member [161] [142] [[typeinfo=0]] 161: AST_Idx [133] [137] [[typeinfo=0]] 166: AST_AssignTo [151] [184] [[typeinfo=0]] 171: AST_TAG "test" (c[54].s) [[typeinfo=0]] 175: AST_Const 56 7 [[typeinfo=0]] 180: AST_TAG "i" (c[59].s) [[typeinfo=0]] 184: AST_Member [189] [180] [[typeinfo=0]] 189: AST_Idx [171] [175] [[typeinfo=0]] 194: AST_SEQ [-1] [166] [[typeinfo=0]] 199: AST_SEQ [127] [-1] [[typeinfo=0]] 204: AST_SEQ [121] [199] [[typeinfo=0]] 209: AST_SEQ [-1] [204] [[typeinfo=0]] 214: AST_SEQ [83] [209] [[typeinfo=0]] 219: AST_Scope [214] -1 0 [[typeinfo=0]] ----------------- C: 0 fixes C: 0 fixes C: 0 fixes 219: AST_Scope [214] -1 0 [[typeinfo=-1]] 214: AST_SEQ [83] [209] [[typeinfo=-1]] 83: AST_TYPE_Struct 1 [76] -1 [[typeinfo=83]] 76: AST_TYPE_StructMember [69] [15] [10] -1 [[typeinfo=-1]] 69: AST_TYPE_StructMember [-1] [41] [55] -1 [[typeinfo=-1]] 41: AST_TAG "a" [[typeinfo=-1]] 55: AST_TYPE_ArrayOf [36] [50] 0 45 -1 [[typeinfo=-1]] 36: AST_TYPE_Atom 50: AST_TYPE_Atom 15: AST_TAG "i" [[typeinfo=-1]] 10: AST_TYPE_Atom 209: AST_SEQ [-1] [204] [[typeinfo=-1]] 204: AST_SEQ [121] [199] [[typeinfo=-1]] 121: AST_Declare [99] [113] [-1] [[typeinfo=-1]] 99: AST_TAG "test" [[typeinfo=-1]] 113: AST_TYPE_ArrayOf [93] [108] 0 103 -1 [[typeinfo=-1]] 93: AST_TYPE_Struct 89 [76] -1 [[typeinfo=93]] 76: AST_TYPE_StructMember [69] [15] [10] -1 [[typeinfo=-1]] 69: AST_TYPE_StructMember [-1] [41] [55] -1 [[typeinfo=-1]] 41: AST_TAG "a" [[typeinfo=-1]] 55: AST_TYPE_ArrayOf [36] [50] 0 45 -1 [[typeinfo=-1]] 36: AST_TYPE_Atom 50: AST_TYPE_Atom 15: AST_TAG "i" [[typeinfo=-1]] 10: AST_TYPE_Atom 108: AST_TYPE_Atom 199: AST_SEQ [127] [-1] [[typeinfo=-1]] 127: AST_Scope [194] 219 2 [[typeinfo=-1]] 194: AST_SEQ [-1] [166] [[typeinfo=-1]] 166: AST_AssignTo [151] [184] [[typeinfo=36]] 151: AST_Idx [156] [146] [[typeinfo=36]] 156: AST_Member [161] [142] [[typeinfo=55]] 161: AST_Idx [133] [137] [[typeinfo=93]] 133: AST_TAG "test" [[typeinfo=113]] 137: AST_Const 7 142: AST_TAG "a" [[typeinfo=55]] 146: AST_Const 3 184: AST_Member [189] [180] [[typeinfo=10]] 189: AST_Idx [171] [175] [[typeinfo=93]] 171: AST_TAG "test" [[typeinfo=113]] 175: AST_Const 7 180: AST_TAG "i" [[typeinfo=10]] ; next is addressof(LHS) PUSH &test ; AddressOf() PUSH #7 ; AST_Const INDEX 4 ; (by size of object type 1083) PUSH &a ; push address of zeroth element of array ADD ; add offset to this member to object base address PUSH #3 ; AST_Const INDEX 4 ; (by size of object type 1083) PUSH &test ; push address of zeroth element of array PUSH #7 ; AST_Const INDEX 12 ; (by size of struct wow) PUSH i ; [[typeinfo=1080]] ADD ; add offset to this member to object base address POPI ; modify TOS-1 with contents of TOS