1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
| const char* const VixlJniHelpersResults[] = {
| " 0: e92d 4de0 stmdb sp!, {r5, r6, r7, r8, sl, fp, lr}\n",
| " 4: ed2d 8a10 vpush {s16-s31}\n",
| " 8: b089 sub sp, #36 ; 0x24\n",
| " a: 9000 str r0, [sp, #0]\n",
| " c: 9121 str r1, [sp, #132] ; 0x84\n",
| " e: ed8d 0a22 vstr s0, [sp, #136] ; 0x88\n",
| " 12: 9223 str r2, [sp, #140] ; 0x8c\n",
| " 14: 9324 str r3, [sp, #144] ; 0x90\n",
| " 16: b088 sub sp, #32\n",
| " 18: f5ad 5d80 sub.w sp, sp, #4096 ; 0x1000\n",
| " 1c: 9808 ldr r0, [sp, #32]\n",
| " 1e: 981f ldr r0, [sp, #124] ; 0x7c\n",
| " 20: 9821 ldr r0, [sp, #132] ; 0x84\n",
| " 22: 98ff ldr r0, [sp, #1020] ; 0x3fc\n",
| " 24: f8dd 0400 ldr.w r0, [sp, #1024] ; 0x400\n",
| " 28: f8dd cffc ldr.w ip, [sp, #4092] ; 0xffc\n",
| " 2c: f50d 5c80 add.w ip, sp, #4096 ; 0x1000\n",
| " 30: f8dc c000 ldr.w ip, [ip]\n",
| " 34: f8d9 c200 ldr.w ip, [r9, #512] ; 0x200\n",
| " 38: f8dc 0080 ldr.w r0, [ip, #128] ; 0x80\n",
| " 3c: 9008 str r0, [sp, #32]\n",
| " 3e: 901f str r0, [sp, #124] ; 0x7c\n",
| " 40: 9021 str r0, [sp, #132] ; 0x84\n",
| " 42: 90ff str r0, [sp, #1020] ; 0x3fc\n",
| " 44: f8cd 0400 str.w r0, [sp, #1024] ; 0x400\n",
| " 48: f8cd cffc str.w ip, [sp, #4092] ; 0xffc\n",
| " 4c: f84d 5d04 str.w r5, [sp, #-4]!\n",
| " 50: f50d 5580 add.w r5, sp, #4096 ; 0x1000\n",
| " 54: f8c5 c004 str.w ip, [r5, #4]\n",
| " 58: f85d 5b04 ldr.w r5, [sp], #4\n",
| " 5c: f04f 0cff mov.w ip, #255 ; 0xff\n",
| " 60: f8cd c030 str.w ip, [sp, #48] ; 0x30\n",
| " 64: f06f 4c7f mvn.w ip, #4278190080 ; 0xff000000\n",
| " 68: f8cd c030 str.w ip, [sp, #48] ; 0x30\n",
| " 6c: f8cd c030 str.w ip, [sp, #48] ; 0x30\n",
| " 70: f8cd c030 str.w ip, [sp, #48] ; 0x30\n",
| " 74: 900c str r0, [sp, #48] ; 0x30\n",
| " 76: f8dd c030 ldr.w ip, [sp, #48] ; 0x30\n",
| " 7a: f8cd c034 str.w ip, [sp, #52] ; 0x34\n",
| " 7e: f50d 5c80 add.w ip, sp, #4096 ; 0x1000\n",
| " 82: f8c9 c200 str.w ip, [r9, #512] ; 0x200\n",
| " 86: f8c9 d200 str.w sp, [r9, #512] ; 0x200\n",
| " 8a: f8d0 c030 ldr.w ip, [r0, #48] ; 0x30\n",
| " 8e: 47e0 blx ip\n",
| " 90: f8dd c02c ldr.w ip, [sp, #44] ; 0x2c\n",
| " 94: f8cd c030 str.w ip, [sp, #48] ; 0x30\n",
| " 98: f8d9 c200 ldr.w ip, [r9, #512] ; 0x200\n",
| " 9c: f8cd c02c str.w ip, [sp, #44] ; 0x2c\n",
| " a0: f8dd c02c ldr.w ip, [sp, #44] ; 0x2c\n",
| " a4: f8cd c030 str.w ip, [sp, #48] ; 0x30\n",
| " a8: 4648 mov r0, r9\n",
| " aa: f8cd 9030 str.w r9, [sp, #48] ; 0x30\n",
| " ae: 4684 mov ip, r0\n",
| " b0: f1bc 0f00 cmp.w ip, #0\n",
| " b4: bf18 it ne\n",
| " b6: f10d 0c30 addne.w ip, sp, #48 ; 0x30\n",
| " ba: f10d 0c30 add.w ip, sp, #48 ; 0x30\n",
| " be: f1bc 0f00 cmp.w ip, #0\n",
| " c2: bf0c ite eq\n",
| " c4: 2000 moveq r0, #0\n",
| " c6: a80c addne r0, sp, #48 ; 0x30\n",
| " c8: f8dd c040 ldr.w ip, [sp, #64] ; 0x40\n",
| " cc: f1bc 0f00 cmp.w ip, #0\n",
| " d0: bf18 it ne\n",
| " d2: f10d 0c40 addne.w ip, sp, #64 ; 0x40\n",
| " d6: f8cd c030 str.w ip, [sp, #48] ; 0x30\n",
| " da: f1bc 0f00 cmp.w ip, #0\n",
| " de: bf0c ite eq\n",
| " e0: 2000 moveq r0, #0\n",
| " e2: 4668 movne r0, sp\n",
| " e4: f1bc 0f00 cmp.w ip, #0\n",
| " e8: bf0c ite eq\n",
| " ea: 2000 moveq r0, #0\n",
| " ec: f20d 4001 addwne r0, sp, #1025 ; 0x401\n",
| " f0: f1bc 0f00 cmp.w ip, #0\n",
| " f4: bf18 it ne\n",
| " f6: f20d 4c01 addwne ip, sp, #1025 ; 0x401\n",
| " fa: f8d9 c09c ldr.w ip, [r9, #156] ; 0x9c\n",
| " fe: f1bc 0f00 cmp.w ip, #0\n",
| " 102: d171 bne.n 1e8 <VixlJniHelpers+0x1e8>\n",
| " 104: f8cd c7ff str.w ip, [sp, #2047] ; 0x7ff\n",
| " 108: f8cd c7ff str.w ip, [sp, #2047] ; 0x7ff\n",
| " 10c: f8cd c7ff str.w ip, [sp, #2047] ; 0x7ff\n",
| " 110: f8cd c7ff str.w ip, [sp, #2047] ; 0x7ff\n",
| " 114: f8cd c7ff str.w ip, [sp, #2047] ; 0x7ff\n",
| " 118: f8cd c7ff str.w ip, [sp, #2047] ; 0x7ff\n",
| " 11c: f8cd c7ff str.w ip, [sp, #2047] ; 0x7ff\n",
| " 120: f8cd c7ff str.w ip, [sp, #2047] ; 0x7ff\n",
| " 124: f8cd c7ff str.w ip, [sp, #2047] ; 0x7ff\n",
| " 128: f8cd c7ff str.w ip, [sp, #2047] ; 0x7ff\n",
| " 12c: f8cd c7ff str.w ip, [sp, #2047] ; 0x7ff\n",
| " 130: f8cd c7ff str.w ip, [sp, #2047] ; 0x7ff\n",
| " 134: f8cd c7ff str.w ip, [sp, #2047] ; 0x7ff\n",
| " 138: f8cd c7ff str.w ip, [sp, #2047] ; 0x7ff\n",
| " 13c: f8cd c7ff str.w ip, [sp, #2047] ; 0x7ff\n",
| " 140: f8cd c7ff str.w ip, [sp, #2047] ; 0x7ff\n",
| " 144: f8cd c7ff str.w ip, [sp, #2047] ; 0x7ff\n",
| " 148: f8cd c7ff str.w ip, [sp, #2047] ; 0x7ff\n",
| " 14c: f8cd c7ff str.w ip, [sp, #2047] ; 0x7ff\n",
| " 150: f8cd c7ff str.w ip, [sp, #2047] ; 0x7ff\n",
| " 154: f8cd c7ff str.w ip, [sp, #2047] ; 0x7ff\n",
| " 158: f8cd c7ff str.w ip, [sp, #2047] ; 0x7ff\n",
| " 15c: f8cd c7ff str.w ip, [sp, #2047] ; 0x7ff\n",
| " 160: f8cd c7ff str.w ip, [sp, #2047] ; 0x7ff\n",
| " 164: f8cd c7ff str.w ip, [sp, #2047] ; 0x7ff\n",
| " 168: f8cd c7ff str.w ip, [sp, #2047] ; 0x7ff\n",
| " 16c: f8cd c7ff str.w ip, [sp, #2047] ; 0x7ff\n",
| " 170: f8cd c7ff str.w ip, [sp, #2047] ; 0x7ff\n",
| " 174: f8cd c7ff str.w ip, [sp, #2047] ; 0x7ff\n",
| " 178: f8cd c7ff str.w ip, [sp, #2047] ; 0x7ff\n",
| " 17c: f8cd c7ff str.w ip, [sp, #2047] ; 0x7ff\n",
| " 180: f8cd c7ff str.w ip, [sp, #2047] ; 0x7ff\n",
| " 184: f8cd c7ff str.w ip, [sp, #2047] ; 0x7ff\n",
| " 188: f8cd c7ff str.w ip, [sp, #2047] ; 0x7ff\n",
| " 18c: f8cd c7ff str.w ip, [sp, #2047] ; 0x7ff\n",
| " 190: f8cd c7ff str.w ip, [sp, #2047] ; 0x7ff\n",
| " 194: f8cd c7ff str.w ip, [sp, #2047] ; 0x7ff\n",
| " 198: f8cd c7ff str.w ip, [sp, #2047] ; 0x7ff\n",
| " 19c: f8cd c7ff str.w ip, [sp, #2047] ; 0x7ff\n",
| " 1a0: f8cd c7ff str.w ip, [sp, #2047] ; 0x7ff\n",
| " 1a4: f8cd c7ff str.w ip, [sp, #2047] ; 0x7ff\n",
| " 1a8: f8cd c7ff str.w ip, [sp, #2047] ; 0x7ff\n",
| " 1ac: f8cd c7ff str.w ip, [sp, #2047] ; 0x7ff\n",
| " 1b0: f8cd c7ff str.w ip, [sp, #2047] ; 0x7ff\n",
| " 1b4: f8cd c7ff str.w ip, [sp, #2047] ; 0x7ff\n",
| " 1b8: f8cd c7ff str.w ip, [sp, #2047] ; 0x7ff\n",
| " 1bc: f8cd c7ff str.w ip, [sp, #2047] ; 0x7ff\n",
| " 1c0: f8cd c7ff str.w ip, [sp, #2047] ; 0x7ff\n",
| " 1c4: f8cd c7ff str.w ip, [sp, #2047] ; 0x7ff\n",
| " 1c8: f8cd c7ff str.w ip, [sp, #2047] ; 0x7ff\n",
| " 1cc: f8cd c7ff str.w ip, [sp, #2047] ; 0x7ff\n",
| " 1d0: f8cd c7ff str.w ip, [sp, #2047] ; 0x7ff\n",
| " 1d4: f8cd c7ff str.w ip, [sp, #2047] ; 0x7ff\n",
| " 1d8: f8cd c7ff str.w ip, [sp, #2047] ; 0x7ff\n",
| " 1dc: f8cd c7ff str.w ip, [sp, #2047] ; 0x7ff\n",
| " 1e0: f8cd c7ff str.w ip, [sp, #2047] ; 0x7ff\n",
| " 1e4: f000 b802 b.w 1ec <VixlJniHelpers+0x1ec>\n",
| " 1e8: f000 b81b b.w 222 <VixlJniHelpers+0x222>\n",
| " 1ec: f8cd c7ff str.w ip, [sp, #2047] ; 0x7ff\n",
| " 1f0: f8cd c7ff str.w ip, [sp, #2047] ; 0x7ff\n",
| " 1f4: f8cd c7ff str.w ip, [sp, #2047] ; 0x7ff\n",
| " 1f8: f8cd c7ff str.w ip, [sp, #2047] ; 0x7ff\n",
| " 1fc: f8cd c7ff str.w ip, [sp, #2047] ; 0x7ff\n",
| " 200: f8cd c7ff str.w ip, [sp, #2047] ; 0x7ff\n",
| " 204: f8cd c7ff str.w ip, [sp, #2047] ; 0x7ff\n",
| " 208: f8cd c7ff str.w ip, [sp, #2047] ; 0x7ff\n",
| " 20c: f50d 5d80 add.w sp, sp, #4096 ; 0x1000\n",
| " 210: b008 add sp, #32\n",
| " 212: b009 add sp, #36 ; 0x24\n",
| " 214: ecbd 8a10 vpop {s16-s31}\n",
| " 218: e8bd 4de0 ldmia.w sp!, {r5, r6, r7, r8, sl, fp, lr}\n",
| " 21c: f8d9 8034 ldr.w r8, [r9, #52] ; 0x34\n",
| " 220: 4770 bx lr\n",
| " 222: 4660 mov r0, ip\n",
| " 224: f8d9 c2e4 ldr.w ip, [r9, #740] ; 0x2e4\n",
| " 228: 47e0 blx ip\n",
| nullptr
| };
|
| const char* const VixlLoadFromOffsetResults[] = {
| " 0: 68e2 ldr r2, [r4, #12]\n",
| " 2: f8d4 2fff ldr.w r2, [r4, #4095] ; 0xfff\n",
| " 6: f504 5280 add.w r2, r4, #4096 ; 0x1000\n",
| " a: 6812 ldr r2, [r2, #0]\n",
| " c: f504 1280 add.w r2, r4, #1048576 ; 0x100000\n",
| " 10: f8d2 20a4 ldr.w r2, [r2, #164] ; 0xa4\n",
| " 14: f44f 5280 mov.w r2, #4096 ; 0x1000\n",
| " 18: f2c0 0210 movt r2, #16\n",
| " 1c: 4422 add r2, r4\n",
| " 1e: 6812 ldr r2, [r2, #0]\n",
| " 20: f44f 5c80 mov.w ip, #4096 ; 0x1000\n",
| " 24: f2c0 0c10 movt ip, #16\n",
| " 28: 4464 add r4, ip\n",
| " 2a: 6824 ldr r4, [r4, #0]\n",
| " 2c: 89a2 ldrh r2, [r4, #12]\n",
| " 2e: f8b4 2fff ldrh.w r2, [r4, #4095] ; 0xfff\n",
| " 32: f504 5280 add.w r2, r4, #4096 ; 0x1000\n",
| " 36: 8812 ldrh r2, [r2, #0]\n",
| " 38: f504 1280 add.w r2, r4, #1048576 ; 0x100000\n",
| " 3c: f8b2 20a4 ldrh.w r2, [r2, #164] ; 0xa4\n",
| " 40: f44f 5280 mov.w r2, #4096 ; 0x1000\n",
| " 44: f2c0 0210 movt r2, #16\n",
| " 48: 4422 add r2, r4\n",
| " 4a: 8812 ldrh r2, [r2, #0]\n",
| " 4c: f44f 5c80 mov.w ip, #4096 ; 0x1000\n",
| " 50: f2c0 0c10 movt ip, #16\n",
| " 54: 4464 add r4, ip\n",
| " 56: 8824 ldrh r4, [r4, #0]\n",
| " 58: e9d4 2303 ldrd r2, r3, [r4, #12]\n",
| " 5c: e9d4 23ff ldrd r2, r3, [r4, #1020] ; 0x3fc\n",
| " 60: f504 6280 add.w r2, r4, #1024 ; 0x400\n",
| " 64: e9d2 2300 ldrd r2, r3, [r2]\n",
| " 68: f504 2280 add.w r2, r4, #262144 ; 0x40000\n",
| " 6c: e9d2 2329 ldrd r2, r3, [r2, #164] ; 0xa4\n",
| " 70: f44f 6280 mov.w r2, #1024 ; 0x400\n",
| " 74: f2c0 0204 movt r2, #4\n",
| " 78: 4422 add r2, r4\n",
| " 7a: e9d2 2300 ldrd r2, r3, [r2]\n",
| " 7e: f44f 6c80 mov.w ip, #1024 ; 0x400\n",
| " 82: f2c0 0c04 movt ip, #4\n",
| " 86: 4464 add r4, ip\n",
| " 88: e9d4 4500 ldrd r4, r5, [r4]\n",
| " 8c: f8dc 000c ldr.w r0, [ip, #12]\n",
| " 90: f5a4 1280 sub.w r2, r4, #1048576 ; 0x100000\n",
| " 94: f8d2 20a4 ldr.w r2, [r2, #164] ; 0xa4\n",
| " 98: f994 200c ldrsb.w r2, [r4, #12]\n",
| " 9c: 7b22 ldrb r2, [r4, #12]\n",
| " 9e: f9b4 200c ldrsh.w r2, [r4, #12]\n",
| nullptr
| };
| const char* const VixlStoreToOffsetResults[] = {
| " 0: 60e2 str r2, [r4, #12]\n",
| " 2: f8c4 2fff str.w r2, [r4, #4095] ; 0xfff\n",
| " 6: f504 5c80 add.w ip, r4, #4096 ; 0x1000\n",
| " a: f8cc 2000 str.w r2, [ip]\n",
| " e: f504 1c80 add.w ip, r4, #1048576 ; 0x100000\n",
| " 12: f8cc 20a4 str.w r2, [ip, #164] ; 0xa4\n",
| " 16: f44f 5c80 mov.w ip, #4096 ; 0x1000\n",
| " 1a: f2c0 0c10 movt ip, #16\n",
| " 1e: 44a4 add ip, r4\n",
| " 20: f8cc 2000 str.w r2, [ip]\n",
| " 24: f44f 5c80 mov.w ip, #4096 ; 0x1000\n",
| " 28: f2c0 0c10 movt ip, #16\n",
| " 2c: 44a4 add ip, r4\n",
| " 2e: f8cc 4000 str.w r4, [ip]\n",
| " 32: 81a2 strh r2, [r4, #12]\n",
| " 34: f8a4 2fff strh.w r2, [r4, #4095] ; 0xfff\n",
| " 38: f504 5c80 add.w ip, r4, #4096 ; 0x1000\n",
| " 3c: f8ac 2000 strh.w r2, [ip]\n",
| " 40: f504 1c80 add.w ip, r4, #1048576 ; 0x100000\n",
| " 44: f8ac 20a4 strh.w r2, [ip, #164] ; 0xa4\n",
| " 48: f44f 5c80 mov.w ip, #4096 ; 0x1000\n",
| " 4c: f2c0 0c10 movt ip, #16\n",
| " 50: 44a4 add ip, r4\n",
| " 52: f8ac 2000 strh.w r2, [ip]\n",
| " 56: f44f 5c80 mov.w ip, #4096 ; 0x1000\n",
| " 5a: f2c0 0c10 movt ip, #16\n",
| " 5e: 44a4 add ip, r4\n",
| " 60: f8ac 4000 strh.w r4, [ip]\n",
| " 64: e9c4 2303 strd r2, r3, [r4, #12]\n",
| " 68: e9c4 23ff strd r2, r3, [r4, #1020] ; 0x3fc\n",
| " 6c: f504 6c80 add.w ip, r4, #1024 ; 0x400\n",
| " 70: e9cc 2300 strd r2, r3, [ip]\n",
| " 74: f504 2c80 add.w ip, r4, #262144 ; 0x40000\n",
| " 78: e9cc 2329 strd r2, r3, [ip, #164] ; 0xa4\n",
| " 7c: f44f 6c80 mov.w ip, #1024 ; 0x400\n",
| " 80: f2c0 0c04 movt ip, #4\n",
| " 84: 44a4 add ip, r4\n",
| " 86: e9cc 2300 strd r2, r3, [ip]\n",
| " 8a: f44f 6c80 mov.w ip, #1024 ; 0x400\n",
| " 8e: f2c0 0c04 movt ip, #4\n",
| " 92: 44a4 add ip, r4\n",
| " 94: e9cc 4500 strd r4, r5, [ip]\n",
| " 98: f8cc 000c str.w r0, [ip, #12]\n",
| " 9c: f5a4 1c80 sub.w ip, r4, #1048576 ; 0x100000\n",
| " a0: f8cc 20a4 str.w r2, [ip, #164] ; 0xa4\n",
| " a4: 7322 strb r2, [r4, #12]\n",
| nullptr
| };
|
| std::map<std::string, const char* const*> test_results;
| void setup_results() {
| test_results["VixlJniHelpers"] = VixlJniHelpersResults;
| test_results["VixlStoreToOffset"] = VixlStoreToOffsetResults;
| test_results["VixlLoadFromOffset"] = VixlLoadFromOffsetResults;
| }
|
|