600 if (execCallbacks && this->callbacks)
603 switch (reg.
getId()) {
604 case triton::arch::ID_REG_AARCH64_X0:
return (*((
triton::uint64*)(this->
x0)));
605 case triton::arch::ID_REG_AARCH64_W0:
return (*((
triton::uint32*)(this->
x0)));
606 case triton::arch::ID_REG_AARCH64_X1:
return (*((
triton::uint64*)(this->
x1)));
607 case triton::arch::ID_REG_AARCH64_W1:
return (*((
triton::uint32*)(this->
x1)));
608 case triton::arch::ID_REG_AARCH64_X2:
return (*((
triton::uint64*)(this->
x2)));
609 case triton::arch::ID_REG_AARCH64_W2:
return (*((
triton::uint32*)(this->
x2)));
610 case triton::arch::ID_REG_AARCH64_X3:
return (*((
triton::uint64*)(this->
x3)));
611 case triton::arch::ID_REG_AARCH64_W3:
return (*((
triton::uint32*)(this->
x3)));
612 case triton::arch::ID_REG_AARCH64_X4:
return (*((
triton::uint64*)(this->
x4)));
613 case triton::arch::ID_REG_AARCH64_W4:
return (*((
triton::uint32*)(this->
x4)));
614 case triton::arch::ID_REG_AARCH64_X5:
return (*((
triton::uint64*)(this->
x5)));
615 case triton::arch::ID_REG_AARCH64_W5:
return (*((
triton::uint32*)(this->
x5)));
616 case triton::arch::ID_REG_AARCH64_X6:
return (*((
triton::uint64*)(this->
x6)));
617 case triton::arch::ID_REG_AARCH64_W6:
return (*((
triton::uint32*)(this->
x6)));
618 case triton::arch::ID_REG_AARCH64_X7:
return (*((
triton::uint64*)(this->
x7)));
619 case triton::arch::ID_REG_AARCH64_W7:
return (*((
triton::uint32*)(this->
x7)));
620 case triton::arch::ID_REG_AARCH64_X8:
return (*((
triton::uint64*)(this->
x8)));
621 case triton::arch::ID_REG_AARCH64_W8:
return (*((
triton::uint32*)(this->
x8)));
622 case triton::arch::ID_REG_AARCH64_X9:
return (*((
triton::uint64*)(this->
x9)));
623 case triton::arch::ID_REG_AARCH64_W9:
return (*((
triton::uint32*)(this->
x9)));
666 case triton::arch::ID_REG_AARCH64_SP:
return (*((
triton::uint64*)(this->
sp)));
667 case triton::arch::ID_REG_AARCH64_WSP:
return (*((
triton::uint32*)(this->
sp)));
668 case triton::arch::ID_REG_AARCH64_PC:
return (*((
triton::uint64*)(this->
pc)));
669 case triton::arch::ID_REG_AARCH64_XZR:
return 0;
670 case triton::arch::ID_REG_AARCH64_WZR:
return 0;
672 case triton::arch::ID_REG_AARCH64_N:
return (((*((
triton::uint32*)(this->
spsr))) >> 31) & 1);
673 case triton::arch::ID_REG_AARCH64_Z:
return (((*((
triton::uint32*)(this->
spsr))) >> 30) & 1);
674 case triton::arch::ID_REG_AARCH64_C:
return (((*((
triton::uint32*)(this->
spsr))) >> 29) & 1);
675 case triton::arch::ID_REG_AARCH64_V:
return (((*((
triton::uint32*)(this->
spsr))) >> 28) & 1);
676 case triton::arch::ID_REG_AARCH64_Q0:
return triton::utils::cast<triton::uint128>(this->
q0);
677 case triton::arch::ID_REG_AARCH64_D0:
return (*((
triton::uint64*)(this->
q0)));
678 case triton::arch::ID_REG_AARCH64_S0:
return (*((
triton::uint32*)(this->
q0)));
679 case triton::arch::ID_REG_AARCH64_H0:
return (*((
triton::uint16*)(this->
q0)));
680 case triton::arch::ID_REG_AARCH64_B0:
return (*((
triton::uint8*)(this->
q0)));
681 case triton::arch::ID_REG_AARCH64_Q1:
return triton::utils::cast<triton::uint128>(this->
q1);
682 case triton::arch::ID_REG_AARCH64_D1:
return (*((
triton::uint64*)(this->
q1)));
683 case triton::arch::ID_REG_AARCH64_S1:
return (*((
triton::uint32*)(this->
q1)));
684 case triton::arch::ID_REG_AARCH64_H1:
return (*((
triton::uint16*)(this->
q1)));
685 case triton::arch::ID_REG_AARCH64_B1:
return (*((
triton::uint8*)(this->
q1)));
686 case triton::arch::ID_REG_AARCH64_Q2:
return triton::utils::cast<triton::uint128>(this->
q2);
687 case triton::arch::ID_REG_AARCH64_D2:
return (*((
triton::uint64*)(this->
q2)));
688 case triton::arch::ID_REG_AARCH64_S2:
return (*((
triton::uint32*)(this->
q2)));
689 case triton::arch::ID_REG_AARCH64_H2:
return (*((
triton::uint16*)(this->
q2)));
690 case triton::arch::ID_REG_AARCH64_B2:
return (*((
triton::uint8*)(this->
q2)));
691 case triton::arch::ID_REG_AARCH64_Q3:
return triton::utils::cast<triton::uint128>(this->
q3);
692 case triton::arch::ID_REG_AARCH64_D3:
return (*((
triton::uint64*)(this->
q3)));
693 case triton::arch::ID_REG_AARCH64_S3:
return (*((
triton::uint32*)(this->
q3)));
694 case triton::arch::ID_REG_AARCH64_H3:
return (*((
triton::uint16*)(this->
q3)));
695 case triton::arch::ID_REG_AARCH64_B3:
return (*((
triton::uint8*)(this->
q3)));
696 case triton::arch::ID_REG_AARCH64_Q4:
return triton::utils::cast<triton::uint128>(this->
q4);
697 case triton::arch::ID_REG_AARCH64_D4:
return (*((
triton::uint64*)(this->
q4)));
698 case triton::arch::ID_REG_AARCH64_S4:
return (*((
triton::uint32*)(this->
q4)));
699 case triton::arch::ID_REG_AARCH64_H4:
return (*((
triton::uint16*)(this->
q4)));
700 case triton::arch::ID_REG_AARCH64_B4:
return (*((
triton::uint8*)(this->
q4)));
701 case triton::arch::ID_REG_AARCH64_Q5:
return triton::utils::cast<triton::uint128>(this->
q5);
702 case triton::arch::ID_REG_AARCH64_D5:
return (*((
triton::uint64*)(this->
q5)));
703 case triton::arch::ID_REG_AARCH64_S5:
return (*((
triton::uint32*)(this->
q5)));
704 case triton::arch::ID_REG_AARCH64_H5:
return (*((
triton::uint16*)(this->
q5)));
705 case triton::arch::ID_REG_AARCH64_B5:
return (*((
triton::uint8*)(this->
q5)));
706 case triton::arch::ID_REG_AARCH64_Q6:
return triton::utils::cast<triton::uint128>(this->
q6);
707 case triton::arch::ID_REG_AARCH64_D6:
return (*((
triton::uint64*)(this->
q6)));
708 case triton::arch::ID_REG_AARCH64_S6:
return (*((
triton::uint32*)(this->
q6)));
709 case triton::arch::ID_REG_AARCH64_H6:
return (*((
triton::uint16*)(this->
q6)));
710 case triton::arch::ID_REG_AARCH64_B6:
return (*((
triton::uint8*)(this->
q6)));
711 case triton::arch::ID_REG_AARCH64_Q7:
return triton::utils::cast<triton::uint128>(this->
q7);
712 case triton::arch::ID_REG_AARCH64_D7:
return (*((
triton::uint64*)(this->
q7)));
713 case triton::arch::ID_REG_AARCH64_S7:
return (*((
triton::uint32*)(this->
q7)));
714 case triton::arch::ID_REG_AARCH64_H7:
return (*((
triton::uint16*)(this->
q7)));
715 case triton::arch::ID_REG_AARCH64_B7:
return (*((
triton::uint8*)(this->
q7)));
716 case triton::arch::ID_REG_AARCH64_Q8:
return triton::utils::cast<triton::uint128>(this->
q8);
717 case triton::arch::ID_REG_AARCH64_D8:
return (*((
triton::uint64*)(this->
q8)));
718 case triton::arch::ID_REG_AARCH64_S8:
return (*((
triton::uint32*)(this->
q8)));
719 case triton::arch::ID_REG_AARCH64_H8:
return (*((
triton::uint16*)(this->
q8)));
720 case triton::arch::ID_REG_AARCH64_B8:
return (*((
triton::uint8*)(this->
q8)));
721 case triton::arch::ID_REG_AARCH64_Q9:
return triton::utils::cast<triton::uint128>(this->
q9);
722 case triton::arch::ID_REG_AARCH64_D9:
return (*((
triton::uint64*)(this->
q9)));
723 case triton::arch::ID_REG_AARCH64_S9:
return (*((
triton::uint32*)(this->
q9)));
724 case triton::arch::ID_REG_AARCH64_H9:
return (*((
triton::uint16*)(this->
q9)));
725 case triton::arch::ID_REG_AARCH64_B9:
return (*((
triton::uint8*)(this->
q9)));
726 case triton::arch::ID_REG_AARCH64_Q10:
return triton::utils::cast<triton::uint128>(this->
q10);
730 case triton::arch::ID_REG_AARCH64_B10:
return (*((
triton::uint8*)(this->
q10)));
731 case triton::arch::ID_REG_AARCH64_Q11:
return triton::utils::cast<triton::uint128>(this->
q11);
735 case triton::arch::ID_REG_AARCH64_B11:
return (*((
triton::uint8*)(this->
q11)));
736 case triton::arch::ID_REG_AARCH64_Q12:
return triton::utils::cast<triton::uint128>(this->
q12);
740 case triton::arch::ID_REG_AARCH64_B12:
return (*((
triton::uint8*)(this->
q12)));
741 case triton::arch::ID_REG_AARCH64_Q13:
return triton::utils::cast<triton::uint128>(this->
q13);
745 case triton::arch::ID_REG_AARCH64_B13:
return (*((
triton::uint8*)(this->
q13)));
746 case triton::arch::ID_REG_AARCH64_Q14:
return triton::utils::cast<triton::uint128>(this->
q14);
750 case triton::arch::ID_REG_AARCH64_B14:
return (*((
triton::uint8*)(this->
q14)));
751 case triton::arch::ID_REG_AARCH64_Q15:
return triton::utils::cast<triton::uint128>(this->
q15);
755 case triton::arch::ID_REG_AARCH64_B15:
return (*((
triton::uint8*)(this->
q15)));
756 case triton::arch::ID_REG_AARCH64_Q16:
return triton::utils::cast<triton::uint128>(this->
q16);
760 case triton::arch::ID_REG_AARCH64_B16:
return (*((
triton::uint8*)(this->
q16)));
761 case triton::arch::ID_REG_AARCH64_Q17:
return triton::utils::cast<triton::uint128>(this->
q17);
765 case triton::arch::ID_REG_AARCH64_B17:
return (*((
triton::uint8*)(this->
q17)));
766 case triton::arch::ID_REG_AARCH64_Q18:
return triton::utils::cast<triton::uint128>(this->
q18);
770 case triton::arch::ID_REG_AARCH64_B18:
return (*((
triton::uint8*)(this->
q18)));
771 case triton::arch::ID_REG_AARCH64_Q19:
return triton::utils::cast<triton::uint128>(this->
q19);
775 case triton::arch::ID_REG_AARCH64_B19:
return (*((
triton::uint8*)(this->
q19)));
776 case triton::arch::ID_REG_AARCH64_Q20:
return triton::utils::cast<triton::uint128>(this->
q20);
780 case triton::arch::ID_REG_AARCH64_B20:
return (*((
triton::uint8*)(this->
q20)));
781 case triton::arch::ID_REG_AARCH64_Q21:
return triton::utils::cast<triton::uint128>(this->
q21);
785 case triton::arch::ID_REG_AARCH64_B21:
return (*((
triton::uint8*)(this->
q21)));
786 case triton::arch::ID_REG_AARCH64_Q22:
return triton::utils::cast<triton::uint128>(this->
q22);
790 case triton::arch::ID_REG_AARCH64_B22:
return (*((
triton::uint8*)(this->
q22)));
791 case triton::arch::ID_REG_AARCH64_Q23:
return triton::utils::cast<triton::uint128>(this->
q23);
795 case triton::arch::ID_REG_AARCH64_B23:
return (*((
triton::uint8*)(this->
q23)));
796 case triton::arch::ID_REG_AARCH64_Q24:
return triton::utils::cast<triton::uint128>(this->
q24);
800 case triton::arch::ID_REG_AARCH64_B24:
return (*((
triton::uint8*)(this->
q24)));
801 case triton::arch::ID_REG_AARCH64_Q25:
return triton::utils::cast<triton::uint128>(this->
q25);
805 case triton::arch::ID_REG_AARCH64_B25:
return (*((
triton::uint8*)(this->
q25)));
806 case triton::arch::ID_REG_AARCH64_Q26:
return triton::utils::cast<triton::uint128>(this->
q26);
810 case triton::arch::ID_REG_AARCH64_B26:
return (*((
triton::uint8*)(this->
q26)));
811 case triton::arch::ID_REG_AARCH64_Q27:
return triton::utils::cast<triton::uint128>(this->
q27);
815 case triton::arch::ID_REG_AARCH64_B27:
return (*((
triton::uint8*)(this->
q27)));
816 case triton::arch::ID_REG_AARCH64_Q28:
return triton::utils::cast<triton::uint128>(this->
q28);
820 case triton::arch::ID_REG_AARCH64_B28:
return (*((
triton::uint8*)(this->
q28)));
821 case triton::arch::ID_REG_AARCH64_Q29:
return triton::utils::cast<triton::uint128>(this->
q29);
825 case triton::arch::ID_REG_AARCH64_B29:
return (*((
triton::uint8*)(this->
q29)));
826 case triton::arch::ID_REG_AARCH64_Q30:
return triton::utils::cast<triton::uint128>(this->
q30);
830 case triton::arch::ID_REG_AARCH64_B30:
return (*((
triton::uint8*)(this->
q30)));
831 case triton::arch::ID_REG_AARCH64_Q31:
return triton::utils::cast<triton::uint128>(this->
q31);
835 case triton::arch::ID_REG_AARCH64_B31:
return (*((
triton::uint8*)(this->
q31)));
836 case triton::arch::ID_REG_AARCH64_V0:
return triton::utils::cast<triton::uint128>(this->
q0);
837 case triton::arch::ID_REG_AARCH64_V1:
return triton::utils::cast<triton::uint128>(this->
q1);
838 case triton::arch::ID_REG_AARCH64_V2:
return triton::utils::cast<triton::uint128>(this->
q2);
839 case triton::arch::ID_REG_AARCH64_V3:
return triton::utils::cast<triton::uint128>(this->
q3);
840 case triton::arch::ID_REG_AARCH64_V4:
return triton::utils::cast<triton::uint128>(this->
q4);
841 case triton::arch::ID_REG_AARCH64_V5:
return triton::utils::cast<triton::uint128>(this->
q5);
842 case triton::arch::ID_REG_AARCH64_V6:
return triton::utils::cast<triton::uint128>(this->
q6);
843 case triton::arch::ID_REG_AARCH64_V7:
return triton::utils::cast<triton::uint128>(this->
q7);
844 case triton::arch::ID_REG_AARCH64_V8:
return triton::utils::cast<triton::uint128>(this->
q8);
845 case triton::arch::ID_REG_AARCH64_V9:
return triton::utils::cast<triton::uint128>(this->
q9);
846 case triton::arch::ID_REG_AARCH64_V10:
return triton::utils::cast<triton::uint128>(this->
q10);
847 case triton::arch::ID_REG_AARCH64_V11:
return triton::utils::cast<triton::uint128>(this->
q11);
848 case triton::arch::ID_REG_AARCH64_V12:
return triton::utils::cast<triton::uint128>(this->
q12);
849 case triton::arch::ID_REG_AARCH64_V13:
return triton::utils::cast<triton::uint128>(this->
q13);
850 case triton::arch::ID_REG_AARCH64_V14:
return triton::utils::cast<triton::uint128>(this->
q14);
851 case triton::arch::ID_REG_AARCH64_V15:
return triton::utils::cast<triton::uint128>(this->
q15);
852 case triton::arch::ID_REG_AARCH64_V16:
return triton::utils::cast<triton::uint128>(this->
q16);
853 case triton::arch::ID_REG_AARCH64_V17:
return triton::utils::cast<triton::uint128>(this->
q17);
854 case triton::arch::ID_REG_AARCH64_V18:
return triton::utils::cast<triton::uint128>(this->
q18);
855 case triton::arch::ID_REG_AARCH64_V19:
return triton::utils::cast<triton::uint128>(this->
q19);
856 case triton::arch::ID_REG_AARCH64_V20:
return triton::utils::cast<triton::uint128>(this->
q20);
857 case triton::arch::ID_REG_AARCH64_V21:
return triton::utils::cast<triton::uint128>(this->
q21);
858 case triton::arch::ID_REG_AARCH64_V22:
return triton::utils::cast<triton::uint128>(this->
q22);
859 case triton::arch::ID_REG_AARCH64_V23:
return triton::utils::cast<triton::uint128>(this->
q23);
860 case triton::arch::ID_REG_AARCH64_V24:
return triton::utils::cast<triton::uint128>(this->
q24);
861 case triton::arch::ID_REG_AARCH64_V25:
return triton::utils::cast<triton::uint128>(this->
q25);
862 case triton::arch::ID_REG_AARCH64_V26:
return triton::utils::cast<triton::uint128>(this->
q26);
863 case triton::arch::ID_REG_AARCH64_V27:
return triton::utils::cast<triton::uint128>(this->
q27);
864 case triton::arch::ID_REG_AARCH64_V28:
return triton::utils::cast<triton::uint128>(this->
q28);
865 case triton::arch::ID_REG_AARCH64_V29:
return triton::utils::cast<triton::uint128>(this->
q29);
866 case triton::arch::ID_REG_AARCH64_V30:
return triton::utils::cast<triton::uint128>(this->
q30);
867 case triton::arch::ID_REG_AARCH64_V31:
return triton::utils::cast<triton::uint128>(this->
q31);
870 #define SYS_REG_SPEC(UPPER_NAME, LOWER_NAME, _2, _3, _4, _5) \
871 case triton::arch::ID_REG_AARCH64_##UPPER_NAME: return (*((triton::uint64*)(this->LOWER_NAME)));
872 #define REG_SPEC(_1, _2, _3, _4, _5, _6)
873 #define REG_SPEC_NO_CAPSTONE(_1, _2, _3, _4, _5, _6)
874 #include "triton/aarch64.spec"
930 throw triton::exceptions::Register(
"AArch64Cpu::setConcreteRegisterValue(): You cannot set this concrete value (too big) to this register.");
932 if (execCallbacks && this->callbacks)
935 switch (reg.
getId()) {
1003 case triton::arch::ID_REG_AARCH64_XZR:
break;
1004 case triton::arch::ID_REG_AARCH64_WZR:
break;
1006 case triton::arch::ID_REG_AARCH64_N: {
1008 (*((
triton::uint32*)(this->
spsr))) = !value.is_zero() ? b | (1 << 31) : b & ~(1 << 31);
1011 case triton::arch::ID_REG_AARCH64_Z: {
1013 (*((
triton::uint32*)(this->
spsr))) = !value.is_zero() ? b | (1 << 30) : b & ~(1 << 30);
1016 case triton::arch::ID_REG_AARCH64_C: {
1018 (*((
triton::uint32*)(this->
spsr))) = !value.is_zero() ? b | (1 << 29) : b & ~(1 << 29);
1021 case triton::arch::ID_REG_AARCH64_V: {
1023 (*((
triton::uint32*)(this->
spsr))) = !value.is_zero() ? b | (1 << 28) : b & ~(1 << 28);
1225 #define SYS_REG_SPEC(UPPER_NAME, LOWER_NAME, _2, _3, _4, _5) \
1226 case triton::arch::ID_REG_AARCH64_##UPPER_NAME: (*((triton::uint64*)(this->LOWER_NAME))) = static_cast<triton::uint64>(value); break;
1227 #define REG_SPEC(_1, _2, _3, _4, _5, _6)
1228 #define REG_SPEC_NO_CAPSTONE(_1, _2, _3, _4, _5, _6)
1229 #include "triton/aarch64.spec"