13 #include <capstone/platform.h>
271 static const char AsmStrs[] = {
272 'l',
'd',
'a',
'p', 32,
'r',
'1',
'1',
',', 32, 0,
273 'g',
'e',
't',
's',
'r', 32,
'r',
'1',
'1',
',', 32, 0,
274 's',
'e',
't', 32,
'c',
'p',
',', 32, 0,
275 's',
'e',
't', 32,
'd',
'p',
',', 32, 0,
276 's',
'e',
't', 32,
's',
'p',
',', 32, 0,
277 'c',
'r',
'c',
'3',
'2', 32, 0,
278 'l',
'd',
'a',
'1',
'6', 32, 0,
279 's',
't',
'1',
'6', 32, 0,
280 'c',
'r',
'c',
'8', 32, 0,
281 's',
't',
'8', 32, 0,
282 '#', 32,
'L',
'D',
'A',
'W',
'F',
'I', 32, 0,
283 '#', 32,
'L',
'D',
'W',
'F',
'I', 32, 0,
284 '#', 32,
'S',
'T',
'W',
'F',
'I', 32, 0,
285 '#', 32,
'E',
'H',
'_',
'R',
'E',
'T',
'U',
'R',
'N', 32, 0,
286 '#', 32,
'A',
'D',
'J',
'C',
'A',
'L',
'L',
'S',
'T',
'A',
'C',
'K',
'D',
'O',
'W',
'N', 32, 0,
287 '#', 32,
'A',
'D',
'J',
'C',
'A',
'L',
'L',
'S',
'T',
'A',
'C',
'K',
'U',
'P', 32, 0,
288 '#', 32,
'F',
'R',
'A',
'M',
'E',
'_',
'T',
'O',
'_',
'A',
'R',
'G',
'S',
'_',
'O',
'F',
'F',
'S',
'E',
'T', 32, 0,
289 'b',
'l',
'a', 32, 0,
290 'l',
's',
'u',
'b', 32, 0,
291 'l',
'd',
'c', 32, 0,
292 'l',
'a',
'd',
'd', 32, 0,
293 'a',
'n',
'd', 32, 0,
294 'g',
'e',
't',
'd', 32, 0,
296 'e',
'e',
'f', 32, 0,
297 'w',
'a',
'i',
't',
'e',
'f', 32, 0,
298 'e',
'c',
'a',
'l',
'l',
'f', 32, 0,
299 'n',
'e',
'g', 32, 0,
300 'd',
'g',
'e',
't',
'r',
'e',
'g', 32, 0,
301 'p',
'e',
'e',
'k', 32, 0,
302 'm',
'k',
'm',
's',
'k', 32, 0,
304 't',
'e',
's',
't',
'l',
'c',
'l', 32, 0,
305 's',
'h',
'l', 32, 0,
306 'k',
'c',
'a',
'l',
'l', 32, 0,
307 'l',
'm',
'u',
'l', 32, 0,
308 'e',
'n',
'd',
'i',
'n', 32, 0,
309 'g',
'e',
't',
'n', 32, 0,
310 'e',
'x',
't',
'd',
'p', 32, 0,
311 'r',
'e',
't',
's',
'p', 32, 0,
312 'k',
'e',
'n',
't',
's',
'p', 32, 0,
313 'k',
'r',
'e',
's',
't',
's',
'p', 32, 0,
314 'e',
'x',
't',
's',
'p', 32, 0,
316 'a',
's',
'h',
'r', 32, 0,
317 'i',
'n',
's',
'h',
'r', 32, 0,
318 'x',
'o',
'r', 32, 0,
319 'c',
'l',
'r',
's',
'r', 32, 0,
320 's',
'e',
't',
's',
'r', 32, 0,
321 'g',
'e',
't',
'r', 32, 0,
322 'l',
'd',
'1',
'6',
's', 32, 0,
323 'm',
'a',
'c',
'c',
's', 32, 0,
324 'r',
'e',
'm',
's', 32, 0,
325 'l',
's',
's', 32, 0,
326 'g',
'e',
't',
't',
's', 32, 0,
327 'd',
'i',
'v',
's', 32, 0,
328 'b',
'l',
'a',
't', 32, 0,
330 'i',
'n',
'c',
't', 32, 0,
331 't',
'e',
's',
't',
'c',
't', 32, 0,
332 't',
'e',
's',
't',
'w',
'c',
't', 32, 0,
333 'e',
'e',
't', 32, 0,
334 'g',
'e',
't', 32, 0,
335 'w',
'a',
'i',
't',
'e',
't', 32, 0,
336 'e',
'c',
'a',
'l',
'l',
't', 32, 0,
337 'i',
'n',
't', 32, 0,
338 'a',
'n',
'd',
'n',
'o',
't', 32, 0,
339 'g',
'e',
't',
's',
't', 32, 0,
340 's',
'e',
'x',
't', 32, 0,
341 'z',
'e',
'x',
't', 32, 0,
342 'l',
'd',
'8',
'u', 32, 0,
343 'b',
'a',
'u', 32, 0,
345 'm',
'a',
'c',
'c',
'u', 32, 0,
346 'r',
'e',
'm',
'u', 32, 0,
347 'b',
'r',
'u', 32, 0,
348 'l',
's',
'u', 32, 0,
349 'l',
'd',
'i',
'v',
'u', 32, 0,
350 'b',
'y',
't',
'e',
'r',
'e',
'v', 32, 0,
351 'b',
'i',
't',
'r',
'e',
'v', 32, 0,
352 'l',
'd',
'a',
'w', 32, 0,
353 'l',
'd',
'w', 32, 0,
354 'i',
'n',
'p',
'w', 32, 0,
355 's',
't',
'w', 32, 0,
356 'c',
'l',
'z', 32, 0,
357 '#', 32,
'S',
'E',
'L',
'E',
'C',
'T',
'_',
'C',
'C', 32,
'P',
'S',
'E',
'U',
'D',
'O',
'!', 0,
358 's',
'e',
't', 32,
'k',
'e',
'p',
',', 32,
'r',
'1',
'1', 0,
359 'L',
'I',
'F',
'E',
'T',
'I',
'M',
'E',
'_',
'E',
'N',
'D', 0,
360 'B',
'U',
'N',
'D',
'L',
'E', 0,
361 'D',
'B',
'G',
'_',
'V',
'A',
'L',
'U',
'E', 0,
362 '#',
'M',
'E',
'M',
'B',
'A',
'R',
'R',
'I',
'E',
'R', 0,
363 'L',
'I',
'F',
'E',
'T',
'I',
'M',
'E',
'_',
'S',
'T',
'A',
'R',
'T', 0,
364 'l',
'd',
'a',
'w', 32,
'r',
'1',
'1',
',', 32,
'c',
'p',
'[', 0,
365 'l',
'd',
'w', 32,
'r',
'1',
'1',
',', 32,
'c',
'p',
'[', 0,
366 'b',
'l',
'a', 32,
'c',
'p',
'[', 0,
367 'm',
's',
'y',
'n',
'c', 32,
'r',
'e',
's',
'[', 0,
368 's',
'e',
't',
'p',
's',
'c', 32,
'r',
'e',
's',
'[', 0,
369 's',
'e',
't',
'c', 32,
'r',
'e',
's',
'[', 0,
370 's',
'e',
't',
'd', 32,
'r',
'e',
's',
'[', 0,
371 's',
'e',
't',
'c',
'l',
'k', 32,
'r',
'e',
's',
'[', 0,
372 'm',
'j',
'o',
'i',
'n', 32,
'r',
'e',
's',
'[', 0,
373 's',
'e',
't',
'n', 32,
'r',
'e',
's',
'[', 0,
374 's',
'y',
'n',
'c',
'r', 32,
'r',
'e',
's',
'[', 0,
375 'f',
'r',
'e',
'e',
'r', 32,
'r',
'e',
's',
'[', 0,
376 'o',
'u',
't',
's',
'h',
'r', 32,
'r',
'e',
's',
'[', 0,
377 'c',
'h',
'k',
'c',
't', 32,
'r',
'e',
's',
'[', 0,
378 'o',
'u',
't',
'c',
't', 32,
'r',
'e',
's',
'[', 0,
379 'c',
'l',
'r',
'p',
't', 32,
'r',
'e',
's',
'[', 0,
380 's',
'e',
't',
'p',
't', 32,
'r',
'e',
's',
'[', 0,
381 'o',
'u',
't',
't', 32,
'r',
'e',
's',
'[', 0,
382 'o',
'u',
't', 32,
'r',
'e',
's',
'[', 0,
383 'e',
'd',
'u', 32,
'r',
'e',
's',
'[', 0,
384 'e',
'e',
'u', 32,
'r',
'e',
's',
'[', 0,
385 's',
'e',
't',
'e',
'v', 32,
'r',
'e',
's',
'[', 0,
386 's',
'e',
't',
'v', 32,
'r',
'e',
's',
'[', 0,
387 'o',
'u',
't',
'p',
'w', 32,
'r',
'e',
's',
'[', 0,
388 's',
'e',
't',
't',
'w', 32,
'r',
'e',
's',
'[', 0,
389 's',
'e',
't',
'r',
'd',
'y', 32,
'r',
'e',
's',
'[', 0,
390 's',
'e',
't', 32,
'p',
's',
'[', 0,
391 's',
'e',
't', 32,
't',
'[', 0,
392 'i',
'n',
'i',
't', 32,
't',
'[', 0,
393 's',
't',
'a',
'r',
't', 32,
't',
'[', 0,
394 'l',
'd',
'w', 32,
's',
'p',
'c',
',', 32,
's',
'p',
'[',
'1',
']', 0,
395 's',
't',
'w', 32,
's',
'p',
'c',
',', 32,
's',
'p',
'[',
'1',
']', 0,
396 'l',
'd',
'w', 32,
's',
's',
'r',
',', 32,
's',
'p',
'[',
'2',
']', 0,
397 's',
't',
'w', 32,
's',
's',
'r',
',', 32,
's',
'p',
'[',
'2',
']', 0,
398 'l',
'd',
'w', 32,
's',
'e',
'd',
',', 32,
's',
'p',
'[',
'3',
']', 0,
399 's',
't',
'w', 32,
's',
'e',
'd',
',', 32,
's',
'p',
'[',
'3',
']', 0,
400 'l',
'd',
'w', 32,
'e',
't',
',', 32,
's',
'p',
'[',
'4',
']', 0,
401 's',
't',
'w', 32,
'e',
't',
',', 32,
's',
'p',
'[',
'4',
']', 0,
402 's',
's',
'y',
'n',
'c', 0,
403 'g',
'e',
't', 32,
'r',
'1',
'1',
',', 32,
'e',
'd', 0,
404 'g',
'e',
't', 32,
'r',
'1',
'1',
',', 32,
'i',
'd', 0,
405 'c',
'l',
'r',
'e', 0,
406 'd',
'c',
'a',
'l',
'l', 0,
407 'g',
'e',
't', 32,
'r',
'1',
'1',
',', 32,
'k',
'e',
'p', 0,
408 'g',
'e',
't', 32,
'r',
'1',
'1',
',', 32,
'k',
's',
'p', 0,
409 'd',
'e',
'n',
't',
's',
'p', 0,
410 'd',
'r',
'e',
's',
't',
's',
'p', 0,
411 't',
's',
'e',
't',
'm',
'r', 32,
'r', 0,
412 'g',
'e',
't', 32,
'r',
'1',
'1',
',', 32,
'e',
't', 0,
413 'f',
'r',
'e',
'e',
't', 0,
414 'd',
'r',
'e',
't', 0,
415 'k',
'r',
'e',
't', 0,
416 'w',
'a',
'i',
't',
'e',
'u', 0,
422 #ifndef CAPSTONE_DIET
427 if (strchr((
const char *)AsmStrs+(Bits & 2047)-1,
'[')) {
428 set_mem_access(MI,
true, 0);
434 switch ((Bits >> 11) & 3) {
444 printOperand(MI, 0,
O);
448 printOperand(MI, 1,
O);
452 printOperand(MI, 2,
O);
459 switch ((Bits >> 13) & 31) {
472 set_mem_access(MI,
false, 0);
482 set_mem_access(MI,
false, 0);
487 set_mem_access(MI,
true, 0);
492 set_mem_access(MI,
true, 0);
493 printOperand(MI, 1,
O);
495 set_mem_access(MI,
false, 0);
502 printOperand(MI, 0,
O);
509 printOperand(MI, 0,
O);
516 printOperand(MI, 0,
O);
523 printOperand(MI, 0,
O);
530 printOperand(MI, 0,
O);
537 printOperand(MI, 1,
O);
539 set_mem_access(MI,
false, 0);
546 printOperand(MI, 1,
O);
548 set_mem_access(MI,
false, 0);
555 printOperand(MI, 1,
O);
557 set_mem_access(MI,
false, 0);
563 set_mem_access(MI,
false, 0);
569 set_mem_access(MI,
false, 0);
570 printOperand(MI, 0,
O);
572 printOperand(MI, 1,
O);
580 switch ((Bits >> 18) & 7) {
584 printOperand(MI, 1,
O);
588 printOperand(MI, 2,
O);
592 printInlineJT(MI, 0,
O);
597 printInlineJT32(MI, 0,
O);
602 printOperand(MI, 0,
O);
610 switch ((Bits >> 21) & 7) {
622 printOperand(MI, 3,
O);
624 printOperand(MI, 4,
O);
630 set_mem_access(MI,
false, 0);
636 set_mem_access(MI,
false, 0);
637 printOperand(MI, 2,
O);
642 printOperand(MI, 2,
O);
647 set_mem_access(MI,
true, 0xffff);
648 printOperand(MI, 2,
O);
650 set_mem_access(MI,
false, 0);
656 set_mem_access(MI,
true, -0xffff);
657 printOperand(MI, 2,
O);
659 set_mem_access(MI,
false, 0);
667 switch ((Bits >> 24) & 7) {
671 printOperand(MI, 2,
O);
675 printOperand(MI, 3,
O);
681 printOperand(MI, 3,
O);
683 printOperand(MI, 4,
O);
688 printOperand(MI, 4,
O);
700 switch ((Bits >> 27) & 3) {
708 printOperand(MI, 2,
O);
710 printOperand(MI, 3,
O);
716 printOperand(MI, 3,
O);
718 printOperand(MI, 4,
O);
720 printOperand(MI, 5,
O);
725 printOperand(MI, 5,
O);
735 static const char *getRegisterName(
unsigned RegNo)
739 #ifndef CAPSTONE_DIET
740 static const char AsmStrs[] = {
759 static const uint8_t RegAsmOffset[] = {
760 38, 41, 47, 44, 4, 11, 14, 17, 20, 23, 26, 29, 32, 35,
768 return AsmStrs+RegAsmOffset[RegNo-1];
unsigned MCInst_getOpcode(const MCInst *inst)
void SStream_concat0(SStream *ss, const char *s)
void XCore_insn_extract(MCInst *MI, const char *code)