1static constexpr uint8_t expected_asm_kThumb2[] = { 2 0x2D, 0xE9, 0xE0, 0x4D, 0x2D, 0xED, 0x10, 0x8A, 0x89, 0xB0, 0x00, 0x90, 3 0x21, 0x91, 0x8D, 0xED, 0x22, 0x0A, 0x23, 0x92, 0x24, 0x93, 0x88, 0xB0, 4 0x08, 0xB0, 0x09, 0xB0, 0xBD, 0xEC, 0x10, 0x8A, 0xBD, 0xE8, 0xE0, 0x8D, 5}; 6static constexpr uint8_t expected_cfi_kThumb2[] = { 7 0x44, 0x0E, 0x1C, 0x85, 0x07, 0x86, 0x06, 0x87, 0x05, 0x88, 0x04, 0x8A, 8 0x03, 0x8B, 0x02, 0x8E, 0x01, 0x44, 0x0E, 0x5C, 0x05, 0x50, 0x17, 0x05, 9 0x51, 0x16, 0x05, 0x52, 0x15, 0x05, 0x53, 0x14, 0x05, 0x54, 0x13, 0x05, 10 0x55, 0x12, 0x05, 0x56, 0x11, 0x05, 0x57, 0x10, 0x05, 0x58, 0x0F, 0x05, 11 0x59, 0x0E, 0x05, 0x5A, 0x0D, 0x05, 0x5B, 0x0C, 0x05, 0x5C, 0x0B, 0x05, 12 0x5D, 0x0A, 0x05, 0x5E, 0x09, 0x05, 0x5F, 0x08, 0x42, 0x0E, 0x80, 0x01, 13 0x4E, 0x0E, 0xA0, 0x01, 0x42, 0x0E, 0x80, 0x01, 0x0A, 0x42, 0x0E, 0x5C, 14 0x44, 0x0E, 0x1C, 0x06, 0x50, 0x06, 0x51, 0x06, 0x52, 0x06, 0x53, 0x06, 15 0x54, 0x06, 0x55, 0x06, 0x56, 0x06, 0x57, 0x06, 0x58, 0x06, 0x59, 0x06, 16 0x5A, 0x06, 0x5B, 0x06, 0x5C, 0x06, 0x5D, 0x06, 0x5E, 0x06, 0x5F, 0x44, 17 0x0B, 0x0E, 0x80, 0x01, 18}; 19// 0x00000000: push {r5, r6, r7, r8, r10, r11, lr} 20// 0x00000004: .cfi_def_cfa_offset: 28 21// 0x00000004: .cfi_offset: r5 at cfa-28 22// 0x00000004: .cfi_offset: r6 at cfa-24 23// 0x00000004: .cfi_offset: r7 at cfa-20 24// 0x00000004: .cfi_offset: r8 at cfa-16 25// 0x00000004: .cfi_offset: r10 at cfa-12 26// 0x00000004: .cfi_offset: r11 at cfa-8 27// 0x00000004: .cfi_offset: r14 at cfa-4 28// 0x00000004: vpush.f32 {s16-s31} 29// 0x00000008: .cfi_def_cfa_offset: 92 30// 0x00000008: .cfi_offset_extended: r80 at cfa-92 31// 0x00000008: .cfi_offset_extended: r81 at cfa-88 32// 0x00000008: .cfi_offset_extended: r82 at cfa-84 33// 0x00000008: .cfi_offset_extended: r83 at cfa-80 34// 0x00000008: .cfi_offset_extended: r84 at cfa-76 35// 0x00000008: .cfi_offset_extended: r85 at cfa-72 36// 0x00000008: .cfi_offset_extended: r86 at cfa-68 37// 0x00000008: .cfi_offset_extended: r87 at cfa-64 38// 0x00000008: .cfi_offset_extended: r88 at cfa-60 39// 0x00000008: .cfi_offset_extended: r89 at cfa-56 40// 0x00000008: .cfi_offset_extended: r90 at cfa-52 41// 0x00000008: .cfi_offset_extended: r91 at cfa-48 42// 0x00000008: .cfi_offset_extended: r92 at cfa-44 43// 0x00000008: .cfi_offset_extended: r93 at cfa-40 44// 0x00000008: .cfi_offset_extended: r94 at cfa-36 45// 0x00000008: .cfi_offset_extended: r95 at cfa-32 46// 0x00000008: sub sp, sp, #36 47// 0x0000000a: .cfi_def_cfa_offset: 128 48// 0x0000000a: str r0, [sp, #0] 49// 0x0000000c: str r1, [sp, #132] 50// 0x0000000e: vstr.f32 s0, [sp, #136] 51// 0x00000012: str r2, [sp, #140] 52// 0x00000014: str r3, [sp, #144] 53// 0x00000016: sub sp, sp, #32 54// 0x00000018: .cfi_def_cfa_offset: 160 55// 0x00000018: add sp, sp, #32 56// 0x0000001a: .cfi_def_cfa_offset: 128 57// 0x0000001a: .cfi_remember_state 58// 0x0000001a: add sp, sp, #36 59// 0x0000001c: .cfi_def_cfa_offset: 92 60// 0x0000001c: vpop.f32 {s16-s31} 61// 0x00000020: .cfi_def_cfa_offset: 28 62// 0x00000020: .cfi_restore_extended: r80 63// 0x00000020: .cfi_restore_extended: r81 64// 0x00000020: .cfi_restore_extended: r82 65// 0x00000020: .cfi_restore_extended: r83 66// 0x00000020: .cfi_restore_extended: r84 67// 0x00000020: .cfi_restore_extended: r85 68// 0x00000020: .cfi_restore_extended: r86 69// 0x00000020: .cfi_restore_extended: r87 70// 0x00000020: .cfi_restore_extended: r88 71// 0x00000020: .cfi_restore_extended: r89 72// 0x00000020: .cfi_restore_extended: r90 73// 0x00000020: .cfi_restore_extended: r91 74// 0x00000020: .cfi_restore_extended: r92 75// 0x00000020: .cfi_restore_extended: r93 76// 0x00000020: .cfi_restore_extended: r94 77// 0x00000020: .cfi_restore_extended: r95 78// 0x00000020: pop {r5, r6, r7, r8, r10, r11, pc} 79// 0x00000024: .cfi_restore_state 80// 0x00000024: .cfi_def_cfa_offset: 128 81 82static constexpr uint8_t expected_asm_kArm64[] = { 83 0xFF, 0x03, 0x03, 0xD1, 0xF3, 0x53, 0x06, 0xA9, 0xF5, 0x5B, 0x07, 0xA9, 84 0xF7, 0x63, 0x08, 0xA9, 0xF9, 0x6B, 0x09, 0xA9, 0xFB, 0x73, 0x0A, 0xA9, 85 0xFD, 0x7B, 0x0B, 0xA9, 0xE8, 0x27, 0x02, 0x6D, 0xEA, 0x2F, 0x03, 0x6D, 86 0xEC, 0x37, 0x04, 0x6D, 0xEE, 0x3F, 0x05, 0x6D, 0xE0, 0x03, 0x00, 0xF9, 87 0xE1, 0xCB, 0x00, 0xB9, 0xE0, 0xCF, 0x00, 0xBD, 0xE2, 0xD3, 0x00, 0xB9, 88 0xE3, 0xD7, 0x00, 0xB9, 0xFF, 0x83, 0x00, 0xD1, 0xFF, 0x83, 0x00, 0x91, 89 0xF3, 0x53, 0x46, 0xA9, 0xF5, 0x5B, 0x47, 0xA9, 0xF7, 0x63, 0x48, 0xA9, 90 0xF9, 0x6B, 0x49, 0xA9, 0xFB, 0x73, 0x4A, 0xA9, 0xFD, 0x7B, 0x4B, 0xA9, 91 0xE8, 0x27, 0x42, 0x6D, 0xEA, 0x2F, 0x43, 0x6D, 0xEC, 0x37, 0x44, 0x6D, 92 0xEE, 0x3F, 0x45, 0x6D, 0xFF, 0x03, 0x03, 0x91, 0xC0, 0x03, 0x5F, 0xD6, 93}; 94static constexpr uint8_t expected_cfi_kArm64[] = { 95 0x44, 0x0E, 0xC0, 0x01, 0x44, 0x93, 0x18, 0x94, 0x16, 0x44, 0x95, 0x14, 96 0x96, 0x12, 0x44, 0x97, 0x10, 0x98, 0x0E, 0x44, 0x99, 0x0C, 0x9A, 0x0A, 97 0x44, 0x9B, 0x08, 0x9C, 0x06, 0x44, 0x9D, 0x04, 0x9E, 0x02, 0x44, 0x05, 98 0x48, 0x28, 0x05, 0x49, 0x26, 0x44, 0x05, 0x4A, 0x24, 0x05, 0x4B, 0x22, 99 0x44, 0x05, 0x4C, 0x20, 0x05, 0x4D, 0x1E, 0x44, 0x05, 0x4E, 0x1C, 0x05, 100 0x4F, 0x1A, 0x58, 0x0E, 0xE0, 0x01, 0x44, 0x0E, 0xC0, 0x01, 0x0A, 0x44, 101 0xD3, 0xD4, 0x44, 0xD5, 0xD6, 0x44, 0xD7, 0xD8, 0x44, 0xD9, 0xDA, 0x44, 102 0xDB, 0xDC, 0x44, 0xDD, 0xDE, 0x44, 0x06, 0x48, 0x06, 0x49, 0x44, 0x06, 103 0x4A, 0x06, 0x4B, 0x44, 0x06, 0x4C, 0x06, 0x4D, 0x44, 0x06, 0x4E, 0x06, 104 0x4F, 0x44, 0x0E, 0x00, 0x44, 0x0B, 0x0E, 0xC0, 0x01, 105}; 106// 0x00000000: sub sp, sp, #0xc0 (192) 107// 0x00000004: .cfi_def_cfa_offset: 192 108// 0x00000004: stp tr, x20, [sp, #96] 109// 0x00000008: .cfi_offset: r19 at cfa-96 110// 0x00000008: .cfi_offset: r20 at cfa-88 111// 0x00000008: stp x21, x22, [sp, #112] 112// 0x0000000c: .cfi_offset: r21 at cfa-80 113// 0x0000000c: .cfi_offset: r22 at cfa-72 114// 0x0000000c: stp x23, x24, [sp, #128] 115// 0x00000010: .cfi_offset: r23 at cfa-64 116// 0x00000010: .cfi_offset: r24 at cfa-56 117// 0x00000010: stp x25, x26, [sp, #144] 118// 0x00000014: .cfi_offset: r25 at cfa-48 119// 0x00000014: .cfi_offset: r26 at cfa-40 120// 0x00000014: stp x27, x28, [sp, #160] 121// 0x00000018: .cfi_offset: r27 at cfa-32 122// 0x00000018: .cfi_offset: r28 at cfa-24 123// 0x00000018: stp x29, lr, [sp, #176] 124// 0x0000001c: .cfi_offset: r29 at cfa-16 125// 0x0000001c: .cfi_offset: r30 at cfa-8 126// 0x0000001c: stp d8, d9, [sp, #32] 127// 0x00000020: .cfi_offset_extended: r72 at cfa-160 128// 0x00000020: .cfi_offset_extended: r73 at cfa-152 129// 0x00000020: stp d10, d11, [sp, #48] 130// 0x00000024: .cfi_offset_extended: r74 at cfa-144 131// 0x00000024: .cfi_offset_extended: r75 at cfa-136 132// 0x00000024: stp d12, d13, [sp, #64] 133// 0x00000028: .cfi_offset_extended: r76 at cfa-128 134// 0x00000028: .cfi_offset_extended: r77 at cfa-120 135// 0x00000028: stp d14, d15, [sp, #80] 136// 0x0000002c: .cfi_offset_extended: r78 at cfa-112 137// 0x0000002c: .cfi_offset_extended: r79 at cfa-104 138// 0x0000002c: str x0, [sp] 139// 0x00000030: str w1, [sp, #200] 140// 0x00000034: str s0, [sp, #204] 141// 0x00000038: str w2, [sp, #208] 142// 0x0000003c: str w3, [sp, #212] 143// 0x00000040: sub sp, sp, #0x20 (32) 144// 0x00000044: .cfi_def_cfa_offset: 224 145// 0x00000044: add sp, sp, #0x20 (32) 146// 0x00000048: .cfi_def_cfa_offset: 192 147// 0x00000048: .cfi_remember_state 148// 0x00000048: ldp tr, x20, [sp, #96] 149// 0x0000004c: .cfi_restore: r19 150// 0x0000004c: .cfi_restore: r20 151// 0x0000004c: ldp x21, x22, [sp, #112] 152// 0x00000050: .cfi_restore: r21 153// 0x00000050: .cfi_restore: r22 154// 0x00000050: ldp x23, x24, [sp, #128] 155// 0x00000054: .cfi_restore: r23 156// 0x00000054: .cfi_restore: r24 157// 0x00000054: ldp x25, x26, [sp, #144] 158// 0x00000058: .cfi_restore: r25 159// 0x00000058: .cfi_restore: r26 160// 0x00000058: ldp x27, x28, [sp, #160] 161// 0x0000005c: .cfi_restore: r27 162// 0x0000005c: .cfi_restore: r28 163// 0x0000005c: ldp x29, lr, [sp, #176] 164// 0x00000060: .cfi_restore: r29 165// 0x00000060: .cfi_restore: r30 166// 0x00000060: ldp d8, d9, [sp, #32] 167// 0x00000064: .cfi_restore_extended: r72 168// 0x00000064: .cfi_restore_extended: r73 169// 0x00000064: ldp d10, d11, [sp, #48] 170// 0x00000068: .cfi_restore_extended: r74 171// 0x00000068: .cfi_restore_extended: r75 172// 0x00000068: ldp d12, d13, [sp, #64] 173// 0x0000006c: .cfi_restore_extended: r76 174// 0x0000006c: .cfi_restore_extended: r77 175// 0x0000006c: ldp d14, d15, [sp, #80] 176// 0x00000070: .cfi_restore_extended: r78 177// 0x00000070: .cfi_restore_extended: r79 178// 0x00000070: add sp, sp, #0xc0 (192) 179// 0x00000074: .cfi_def_cfa_offset: 0 180// 0x00000074: ret 181// 0x00000078: .cfi_restore_state 182// 0x00000078: .cfi_def_cfa_offset: 192 183 184static constexpr uint8_t expected_asm_kX86[] = { 185 0x57, 0x56, 0x55, 0x83, 0xC4, 0xE4, 0x50, 0x89, 0x4C, 0x24, 0x34, 0xF3, 186 0x0F, 0x11, 0x44, 0x24, 0x38, 0x89, 0x54, 0x24, 0x3C, 0x89, 0x5C, 0x24, 187 0x40, 0x83, 0xC4, 0xE0, 0x83, 0xC4, 0x20, 0x83, 0xC4, 0x20, 0x5D, 0x5E, 188 0x5F, 0xC3, 189}; 190static constexpr uint8_t expected_cfi_kX86[] = { 191 0x41, 0x0E, 0x08, 0x87, 0x02, 0x41, 0x0E, 0x0C, 0x86, 0x03, 0x41, 0x0E, 192 0x10, 0x85, 0x04, 0x43, 0x0E, 0x2C, 0x41, 0x0E, 0x30, 0x55, 0x0E, 0x50, 193 0x43, 0x0E, 0x30, 0x0A, 0x43, 0x0E, 0x10, 0x41, 0x0E, 0x0C, 0xC5, 0x41, 194 0x0E, 0x08, 0xC6, 0x41, 0x0E, 0x04, 0xC7, 0x41, 0x0B, 0x0E, 0x30, 195}; 196// 0x00000000: push edi 197// 0x00000001: .cfi_def_cfa_offset: 8 198// 0x00000001: .cfi_offset: r7 at cfa-8 199// 0x00000001: push esi 200// 0x00000002: .cfi_def_cfa_offset: 12 201// 0x00000002: .cfi_offset: r6 at cfa-12 202// 0x00000002: push ebp 203// 0x00000003: .cfi_def_cfa_offset: 16 204// 0x00000003: .cfi_offset: r5 at cfa-16 205// 0x00000003: add esp, -28 206// 0x00000006: .cfi_def_cfa_offset: 44 207// 0x00000006: push eax 208// 0x00000007: .cfi_def_cfa_offset: 48 209// 0x00000007: mov [esp + 52], ecx 210// 0x0000000b: movss [esp + 56], xmm0 211// 0x00000011: mov [esp + 60], edx 212// 0x00000015: mov [esp + 64], ebx 213// 0x00000019: add esp, -32 214// 0x0000001c: .cfi_def_cfa_offset: 80 215// 0x0000001c: add esp, 32 216// 0x0000001f: .cfi_def_cfa_offset: 48 217// 0x0000001f: .cfi_remember_state 218// 0x0000001f: add esp, 32 219// 0x00000022: .cfi_def_cfa_offset: 16 220// 0x00000022: pop ebp 221// 0x00000023: .cfi_def_cfa_offset: 12 222// 0x00000023: .cfi_restore: r5 223// 0x00000023: pop esi 224// 0x00000024: .cfi_def_cfa_offset: 8 225// 0x00000024: .cfi_restore: r6 226// 0x00000024: pop edi 227// 0x00000025: .cfi_def_cfa_offset: 4 228// 0x00000025: .cfi_restore: r7 229// 0x00000025: ret 230// 0x00000026: .cfi_restore_state 231// 0x00000026: .cfi_def_cfa_offset: 48 232 233static constexpr uint8_t expected_asm_kX86_64[] = { 234 0x41, 0x57, 0x41, 0x56, 0x41, 0x55, 0x41, 0x54, 0x55, 0x53, 0x48, 0x83, 235 0xEC, 0x48, 0xF2, 0x44, 0x0F, 0x11, 0x7C, 0x24, 0x40, 0xF2, 0x44, 0x0F, 236 0x11, 0x74, 0x24, 0x38, 0xF2, 0x44, 0x0F, 0x11, 0x6C, 0x24, 0x30, 0xF2, 237 0x44, 0x0F, 0x11, 0x64, 0x24, 0x28, 0x48, 0x89, 0x3C, 0x24, 0x89, 0xB4, 238 0x24, 0x88, 0x00, 0x00, 0x00, 0xF3, 0x0F, 0x11, 0x84, 0x24, 0x8C, 0x00, 239 0x00, 0x00, 0x89, 0x94, 0x24, 0x90, 0x00, 0x00, 0x00, 0x89, 0x8C, 0x24, 240 0x94, 0x00, 0x00, 0x00, 0x48, 0x83, 0xC4, 0xE0, 0x48, 0x83, 0xC4, 0x20, 241 0xF2, 0x44, 0x0F, 0x10, 0x64, 0x24, 0x28, 0xF2, 0x44, 0x0F, 0x10, 0x6C, 242 0x24, 0x30, 0xF2, 0x44, 0x0F, 0x10, 0x74, 0x24, 0x38, 0xF2, 0x44, 0x0F, 243 0x10, 0x7C, 0x24, 0x40, 0x48, 0x83, 0xC4, 0x48, 0x5B, 0x5D, 0x41, 0x5C, 244 0x41, 0x5D, 0x41, 0x5E, 0x41, 0x5F, 0xC3, 245}; 246static constexpr uint8_t expected_cfi_kX86_64[] = { 247 0x42, 0x0E, 0x10, 0x8F, 0x04, 0x42, 0x0E, 0x18, 0x8E, 0x06, 0x42, 0x0E, 248 0x20, 0x8D, 0x08, 0x42, 0x0E, 0x28, 0x8C, 0x0A, 0x41, 0x0E, 0x30, 0x86, 249 0x0C, 0x41, 0x0E, 0x38, 0x83, 0x0E, 0x44, 0x0E, 0x80, 0x01, 0x47, 0xA0, 250 0x10, 0x47, 0x9F, 0x12, 0x47, 0x9E, 0x14, 0x47, 0x9D, 0x16, 0x66, 0x0E, 251 0xA0, 0x01, 0x44, 0x0E, 0x80, 0x01, 0x0A, 0x47, 0xDD, 0x47, 0xDE, 0x47, 252 0xDF, 0x47, 0xE0, 0x44, 0x0E, 0x38, 0x41, 0x0E, 0x30, 0xC3, 0x41, 0x0E, 253 0x28, 0xC6, 0x42, 0x0E, 0x20, 0xCC, 0x42, 0x0E, 0x18, 0xCD, 0x42, 0x0E, 254 0x10, 0xCE, 0x42, 0x0E, 0x08, 0xCF, 0x41, 0x0B, 0x0E, 0x80, 0x01, 255}; 256// 0x00000000: push r15 257// 0x00000002: .cfi_def_cfa_offset: 16 258// 0x00000002: .cfi_offset: r15 at cfa-16 259// 0x00000002: push r14 260// 0x00000004: .cfi_def_cfa_offset: 24 261// 0x00000004: .cfi_offset: r14 at cfa-24 262// 0x00000004: push r13 263// 0x00000006: .cfi_def_cfa_offset: 32 264// 0x00000006: .cfi_offset: r13 at cfa-32 265// 0x00000006: push r12 266// 0x00000008: .cfi_def_cfa_offset: 40 267// 0x00000008: .cfi_offset: r12 at cfa-40 268// 0x00000008: push rbp 269// 0x00000009: .cfi_def_cfa_offset: 48 270// 0x00000009: .cfi_offset: r6 at cfa-48 271// 0x00000009: push rbx 272// 0x0000000a: .cfi_def_cfa_offset: 56 273// 0x0000000a: .cfi_offset: r3 at cfa-56 274// 0x0000000a: subq rsp, 72 275// 0x0000000e: .cfi_def_cfa_offset: 128 276// 0x0000000e: movsd [rsp + 64], xmm15 277// 0x00000015: .cfi_offset: r32 at cfa-64 278// 0x00000015: movsd [rsp + 56], xmm14 279// 0x0000001c: .cfi_offset: r31 at cfa-72 280// 0x0000001c: movsd [rsp + 48], xmm13 281// 0x00000023: .cfi_offset: r30 at cfa-80 282// 0x00000023: movsd [rsp + 40], xmm12 283// 0x0000002a: .cfi_offset: r29 at cfa-88 284// 0x0000002a: movq [rsp], rdi 285// 0x0000002e: mov [rsp + 136], esi 286// 0x00000035: movss [rsp + 140], xmm0 287// 0x0000003e: mov [rsp + 144], edx 288// 0x00000045: mov [rsp + 148], ecx 289// 0x0000004c: addq rsp, -32 290// 0x00000050: .cfi_def_cfa_offset: 160 291// 0x00000050: addq rsp, 32 292// 0x00000054: .cfi_def_cfa_offset: 128 293// 0x00000054: .cfi_remember_state 294// 0x00000054: movsd xmm12, [rsp + 40] 295// 0x0000005b: .cfi_restore: r29 296// 0x0000005b: movsd xmm13, [rsp + 48] 297// 0x00000062: .cfi_restore: r30 298// 0x00000062: movsd xmm14, [rsp + 56] 299// 0x00000069: .cfi_restore: r31 300// 0x00000069: movsd xmm15, [rsp + 64] 301// 0x00000070: .cfi_restore: r32 302// 0x00000070: addq rsp, 72 303// 0x00000074: .cfi_def_cfa_offset: 56 304// 0x00000074: pop rbx 305// 0x00000075: .cfi_def_cfa_offset: 48 306// 0x00000075: .cfi_restore: r3 307// 0x00000075: pop rbp 308// 0x00000076: .cfi_def_cfa_offset: 40 309// 0x00000076: .cfi_restore: r6 310// 0x00000076: pop r12 311// 0x00000078: .cfi_def_cfa_offset: 32 312// 0x00000078: .cfi_restore: r12 313// 0x00000078: pop r13 314// 0x0000007a: .cfi_def_cfa_offset: 24 315// 0x0000007a: .cfi_restore: r13 316// 0x0000007a: pop r14 317// 0x0000007c: .cfi_def_cfa_offset: 16 318// 0x0000007c: .cfi_restore: r14 319// 0x0000007c: pop r15 320// 0x0000007e: .cfi_def_cfa_offset: 8 321// 0x0000007e: .cfi_restore: r15 322// 0x0000007e: ret 323// 0x0000007f: .cfi_restore_state 324// 0x0000007f: .cfi_def_cfa_offset: 128 325 326static constexpr uint8_t expected_asm_kMips[] = { 327 0xC0, 0xFF, 0xBD, 0x27, 0x3C, 0x00, 0xBF, 0xAF, 0x38, 0x00, 0xBE, 0xAF, 328 0x34, 0x00, 0xB7, 0xAF, 0x30, 0x00, 0xB6, 0xAF, 0x2C, 0x00, 0xB5, 0xAF, 329 0x28, 0x00, 0xB4, 0xAF, 0x24, 0x00, 0xB3, 0xAF, 0x20, 0x00, 0xB2, 0xAF, 330 0x00, 0x00, 0xA4, 0xAF, 0x44, 0x00, 0xA5, 0xAF, 0x48, 0x00, 0xA8, 0xE7, 331 0x4C, 0x00, 0xA6, 0xAF, 0x50, 0x00, 0xA7, 0xAF, 0xE0, 0xFF, 0xBD, 0x27, 332 0x20, 0x00, 0xBD, 0x27, 0x20, 0x00, 0xB2, 0x8F, 0x24, 0x00, 0xB3, 0x8F, 333 0x28, 0x00, 0xB4, 0x8F, 0x2C, 0x00, 0xB5, 0x8F, 0x30, 0x00, 0xB6, 0x8F, 334 0x34, 0x00, 0xB7, 0x8F, 0x38, 0x00, 0xBE, 0x8F, 0x3C, 0x00, 0xBF, 0x8F, 335 0x09, 0x00, 0xE0, 0x03, 0x40, 0x00, 0xBD, 0x27, 336}; 337static constexpr uint8_t expected_cfi_kMips[] = { 338 0x44, 0x0E, 0x40, 0x44, 0x9F, 0x01, 0x44, 0x9E, 0x02, 0x44, 0x97, 0x03, 339 0x44, 0x96, 0x04, 0x44, 0x95, 0x05, 0x44, 0x94, 0x06, 0x44, 0x93, 0x07, 340 0x44, 0x92, 0x08, 0x58, 0x0E, 0x60, 0x44, 0x0E, 0x40, 0x0A, 0x44, 0xD2, 341 0x44, 0xD3, 0x44, 0xD4, 0x44, 0xD5, 0x44, 0xD6, 0x44, 0xD7, 0x44, 0xDE, 342 0x44, 0xDF, 0x48, 0x0E, 0x00, 0x0B, 0x0E, 0x40, 343}; 344// 0x00000000: addiu r29, r29, -64 345// 0x00000004: .cfi_def_cfa_offset: 64 346// 0x00000004: sw r31, +60(r29) 347// 0x00000008: .cfi_offset: r31 at cfa-4 348// 0x00000008: sw r30, +56(r29) 349// 0x0000000c: .cfi_offset: r30 at cfa-8 350// 0x0000000c: sw r23, +52(r29) 351// 0x00000010: .cfi_offset: r23 at cfa-12 352// 0x00000010: sw r22, +48(r29) 353// 0x00000014: .cfi_offset: r22 at cfa-16 354// 0x00000014: sw r21, +44(r29) 355// 0x00000018: .cfi_offset: r21 at cfa-20 356// 0x00000018: sw r20, +40(r29) 357// 0x0000001c: .cfi_offset: r20 at cfa-24 358// 0x0000001c: sw r19, +36(r29) 359// 0x00000020: .cfi_offset: r19 at cfa-28 360// 0x00000020: sw r18, +32(r29) 361// 0x00000024: .cfi_offset: r18 at cfa-32 362// 0x00000024: sw r4, +0(r29) 363// 0x00000028: sw r5, +68(r29) 364// 0x0000002c: swc1 f8, +72(r29) 365// 0x00000030: sw r6, +76(r29) 366// 0x00000034: sw r7, +80(r29) 367// 0x00000038: addiu r29, r29, -32 368// 0x0000003c: .cfi_def_cfa_offset: 96 369// 0x0000003c: addiu r29, r29, 32 370// 0x00000040: .cfi_def_cfa_offset: 64 371// 0x00000040: .cfi_remember_state 372// 0x00000040: lw r18, +32(r29) 373// 0x00000044: .cfi_restore: r18 374// 0x00000044: lw r19, +36(r29) 375// 0x00000048: .cfi_restore: r19 376// 0x00000048: lw r20, +40(r29) 377// 0x0000004c: .cfi_restore: r20 378// 0x0000004c: lw r21, +44(r29) 379// 0x00000050: .cfi_restore: r21 380// 0x00000050: lw r22, +48(r29) 381// 0x00000054: .cfi_restore: r22 382// 0x00000054: lw r23, +52(r29) 383// 0x00000058: .cfi_restore: r23 384// 0x00000058: lw r30, +56(r29) 385// 0x0000005c: .cfi_restore: r30 386// 0x0000005c: lw r31, +60(r29) 387// 0x00000060: .cfi_restore: r31 388// 0x00000060: jr r31 389// 0x00000064: addiu r29, r29, 64 390// 0x00000068: .cfi_def_cfa_offset: 0 391// 0x00000068: .cfi_restore_state 392// 0x00000068: .cfi_def_cfa_offset: 64 393 394static constexpr uint8_t expected_asm_kMips64[] = { 395 0x90, 0xFF, 0xBD, 0x67, 0x68, 0x00, 0xBF, 0xFF, 0x60, 0x00, 0xBE, 0xFF, 396 0x58, 0x00, 0xBC, 0xFF, 0x50, 0x00, 0xB7, 0xFF, 0x48, 0x00, 0xB6, 0xFF, 397 0x40, 0x00, 0xB5, 0xFF, 0x38, 0x00, 0xB4, 0xFF, 0x30, 0x00, 0xB3, 0xFF, 398 0x28, 0x00, 0xB2, 0xFF, 0x00, 0x00, 0xA4, 0xFF, 0x78, 0x00, 0xA5, 0xAF, 399 0x7C, 0x00, 0xAE, 0xE7, 0x80, 0x00, 0xA7, 0xAF, 0x84, 0x00, 0xA8, 0xAF, 400 0xE0, 0xFF, 0xBD, 0x67, 0x20, 0x00, 0xBD, 0x67, 0x28, 0x00, 0xB2, 0xDF, 401 0x30, 0x00, 0xB3, 0xDF, 0x38, 0x00, 0xB4, 0xDF, 0x40, 0x00, 0xB5, 0xDF, 402 0x48, 0x00, 0xB6, 0xDF, 0x50, 0x00, 0xB7, 0xDF, 0x58, 0x00, 0xBC, 0xDF, 403 0x60, 0x00, 0xBE, 0xDF, 0x68, 0x00, 0xBF, 0xDF, 0x70, 0x00, 0xBD, 0x67, 404 0x09, 0x00, 0xE0, 0x03, 0x00, 0x00, 0x00, 0x00, 405}; 406static constexpr uint8_t expected_cfi_kMips64[] = { 407 0x44, 0x0E, 0x70, 0x44, 0x9F, 0x02, 0x44, 0x9E, 0x04, 0x44, 0x9C, 0x06, 408 0x44, 0x97, 0x08, 0x44, 0x96, 0x0A, 0x44, 0x95, 0x0C, 0x44, 0x94, 0x0E, 409 0x44, 0x93, 0x10, 0x44, 0x92, 0x12, 0x58, 0x0E, 0x90, 0x01, 0x44, 0x0E, 410 0x70, 0x0A, 0x44, 0xD2, 0x44, 0xD3, 0x44, 0xD4, 0x44, 0xD5, 0x44, 0xD6, 411 0x44, 0xD7, 0x44, 0xDC, 0x44, 0xDE, 0x44, 0xDF, 0x44, 0x0E, 0x00, 0x48, 412 0x0B, 0x0E, 0x70, 413}; 414// 0x00000000: daddiu r29, r29, -112 415// 0x00000004: .cfi_def_cfa_offset: 112 416// 0x00000004: sd r31, +104(r29) 417// 0x00000008: .cfi_offset: r31 at cfa-8 418// 0x00000008: sd r30, +96(r29) 419// 0x0000000c: .cfi_offset: r30 at cfa-16 420// 0x0000000c: sd r28, +88(r29) 421// 0x00000010: .cfi_offset: r28 at cfa-24 422// 0x00000010: sd r23, +80(r29) 423// 0x00000014: .cfi_offset: r23 at cfa-32 424// 0x00000014: sd r22, +72(r29) 425// 0x00000018: .cfi_offset: r22 at cfa-40 426// 0x00000018: sd r21, +64(r29) 427// 0x0000001c: .cfi_offset: r21 at cfa-48 428// 0x0000001c: sd r20, +56(r29) 429// 0x00000020: .cfi_offset: r20 at cfa-56 430// 0x00000020: sd r19, +48(r29) 431// 0x00000024: .cfi_offset: r19 at cfa-64 432// 0x00000024: sd r18, +40(r29) 433// 0x00000028: .cfi_offset: r18 at cfa-72 434// 0x00000028: sd r4, +0(r29) 435// 0x0000002c: sw r5, +120(r29) 436// 0x00000030: swc1 f14, +124(r29) 437// 0x00000034: sw r7, +128(r29) 438// 0x00000038: sw r8, +132(r29) 439// 0x0000003c: daddiu r29, r29, -32 440// 0x00000040: .cfi_def_cfa_offset: 144 441// 0x00000040: daddiu r29, r29, 32 442// 0x00000044: .cfi_def_cfa_offset: 112 443// 0x00000044: .cfi_remember_state 444// 0x00000044: ld r18, +40(r29) 445// 0x00000048: .cfi_restore: r18 446// 0x00000048: ld r19, +48(r29) 447// 0x0000004c: .cfi_restore: r19 448// 0x0000004c: ld r20, +56(r29) 449// 0x00000050: .cfi_restore: r20 450// 0x00000050: ld r21, +64(r29) 451// 0x00000054: .cfi_restore: r21 452// 0x00000054: ld r22, +72(r29) 453// 0x00000058: .cfi_restore: r22 454// 0x00000058: ld r23, +80(r29) 455// 0x0000005c: .cfi_restore: r23 456// 0x0000005c: ld r28, +88(r29) 457// 0x00000060: .cfi_restore: r28 458// 0x00000060: ld r30, +96(r29) 459// 0x00000064: .cfi_restore: r30 460// 0x00000064: ld r31, +104(r29) 461// 0x00000068: .cfi_restore: r31 462// 0x00000068: daddiu r29, r29, 112 463// 0x0000006c: .cfi_def_cfa_offset: 0 464// 0x0000006c: jr r31 465// 0x00000070: nop 466// 0x00000074: .cfi_restore_state 467// 0x00000074: .cfi_def_cfa_offset: 112 468 469