623 if (execCallbacks && this->callbacks)
626 switch (reg.
getId()) {
627 case triton::arch::ID_REG_AARCH64_X0:
return (*((
triton::uint64*)(this->
x0)));
628 case triton::arch::ID_REG_AARCH64_W0:
return (*((
triton::uint32*)(this->
x0)));
629 case triton::arch::ID_REG_AARCH64_X1:
return (*((
triton::uint64*)(this->
x1)));
630 case triton::arch::ID_REG_AARCH64_W1:
return (*((
triton::uint32*)(this->
x1)));
631 case triton::arch::ID_REG_AARCH64_X2:
return (*((
triton::uint64*)(this->
x2)));
632 case triton::arch::ID_REG_AARCH64_W2:
return (*((
triton::uint32*)(this->
x2)));
633 case triton::arch::ID_REG_AARCH64_X3:
return (*((
triton::uint64*)(this->
x3)));
634 case triton::arch::ID_REG_AARCH64_W3:
return (*((
triton::uint32*)(this->
x3)));
635 case triton::arch::ID_REG_AARCH64_X4:
return (*((
triton::uint64*)(this->
x4)));
636 case triton::arch::ID_REG_AARCH64_W4:
return (*((
triton::uint32*)(this->
x4)));
637 case triton::arch::ID_REG_AARCH64_X5:
return (*((
triton::uint64*)(this->
x5)));
638 case triton::arch::ID_REG_AARCH64_W5:
return (*((
triton::uint32*)(this->
x5)));
639 case triton::arch::ID_REG_AARCH64_X6:
return (*((
triton::uint64*)(this->
x6)));
640 case triton::arch::ID_REG_AARCH64_W6:
return (*((
triton::uint32*)(this->
x6)));
641 case triton::arch::ID_REG_AARCH64_X7:
return (*((
triton::uint64*)(this->
x7)));
642 case triton::arch::ID_REG_AARCH64_W7:
return (*((
triton::uint32*)(this->
x7)));
643 case triton::arch::ID_REG_AARCH64_X8:
return (*((
triton::uint64*)(this->
x8)));
644 case triton::arch::ID_REG_AARCH64_W8:
return (*((
triton::uint32*)(this->
x8)));
645 case triton::arch::ID_REG_AARCH64_X9:
return (*((
triton::uint64*)(this->
x9)));
646 case triton::arch::ID_REG_AARCH64_W9:
return (*((
triton::uint32*)(this->
x9)));
689 case triton::arch::ID_REG_AARCH64_SP:
return (*((
triton::uint64*)(this->
sp)));
690 case triton::arch::ID_REG_AARCH64_WSP:
return (*((
triton::uint32*)(this->
sp)));
691 case triton::arch::ID_REG_AARCH64_PC:
return (*((
triton::uint64*)(this->
pc)));
692 case triton::arch::ID_REG_AARCH64_XZR:
return 0;
693 case triton::arch::ID_REG_AARCH64_WZR:
return 0;
695 case triton::arch::ID_REG_AARCH64_N:
return (((*((
triton::uint32*)(this->
spsr))) >> 31) & 1);
696 case triton::arch::ID_REG_AARCH64_Z:
return (((*((
triton::uint32*)(this->
spsr))) >> 30) & 1);
697 case triton::arch::ID_REG_AARCH64_C:
return (((*((
triton::uint32*)(this->
spsr))) >> 29) & 1);
698 case triton::arch::ID_REG_AARCH64_V:
return (((*((
triton::uint32*)(this->
spsr))) >> 28) & 1);
699 case triton::arch::ID_REG_AARCH64_Q0:
return triton::utils::cast<triton::uint128>(this->
q0);
700 case triton::arch::ID_REG_AARCH64_D0:
return (*((
triton::uint64*)(this->
q0)));
701 case triton::arch::ID_REG_AARCH64_S0:
return (*((
triton::uint32*)(this->
q0)));
702 case triton::arch::ID_REG_AARCH64_H0:
return (*((
triton::uint16*)(this->
q0)));
703 case triton::arch::ID_REG_AARCH64_B0:
return (*((
triton::uint8*)(this->
q0)));
704 case triton::arch::ID_REG_AARCH64_Q1:
return triton::utils::cast<triton::uint128>(this->
q1);
705 case triton::arch::ID_REG_AARCH64_D1:
return (*((
triton::uint64*)(this->
q1)));
706 case triton::arch::ID_REG_AARCH64_S1:
return (*((
triton::uint32*)(this->
q1)));
707 case triton::arch::ID_REG_AARCH64_H1:
return (*((
triton::uint16*)(this->
q1)));
708 case triton::arch::ID_REG_AARCH64_B1:
return (*((
triton::uint8*)(this->
q1)));
709 case triton::arch::ID_REG_AARCH64_Q2:
return triton::utils::cast<triton::uint128>(this->
q2);
710 case triton::arch::ID_REG_AARCH64_D2:
return (*((
triton::uint64*)(this->
q2)));
711 case triton::arch::ID_REG_AARCH64_S2:
return (*((
triton::uint32*)(this->
q2)));
712 case triton::arch::ID_REG_AARCH64_H2:
return (*((
triton::uint16*)(this->
q2)));
713 case triton::arch::ID_REG_AARCH64_B2:
return (*((
triton::uint8*)(this->
q2)));
714 case triton::arch::ID_REG_AARCH64_Q3:
return triton::utils::cast<triton::uint128>(this->
q3);
715 case triton::arch::ID_REG_AARCH64_D3:
return (*((
triton::uint64*)(this->
q3)));
716 case triton::arch::ID_REG_AARCH64_S3:
return (*((
triton::uint32*)(this->
q3)));
717 case triton::arch::ID_REG_AARCH64_H3:
return (*((
triton::uint16*)(this->
q3)));
718 case triton::arch::ID_REG_AARCH64_B3:
return (*((
triton::uint8*)(this->
q3)));
719 case triton::arch::ID_REG_AARCH64_Q4:
return triton::utils::cast<triton::uint128>(this->
q4);
720 case triton::arch::ID_REG_AARCH64_D4:
return (*((
triton::uint64*)(this->
q4)));
721 case triton::arch::ID_REG_AARCH64_S4:
return (*((
triton::uint32*)(this->
q4)));
722 case triton::arch::ID_REG_AARCH64_H4:
return (*((
triton::uint16*)(this->
q4)));
723 case triton::arch::ID_REG_AARCH64_B4:
return (*((
triton::uint8*)(this->
q4)));
724 case triton::arch::ID_REG_AARCH64_Q5:
return triton::utils::cast<triton::uint128>(this->
q5);
725 case triton::arch::ID_REG_AARCH64_D5:
return (*((
triton::uint64*)(this->
q5)));
726 case triton::arch::ID_REG_AARCH64_S5:
return (*((
triton::uint32*)(this->
q5)));
727 case triton::arch::ID_REG_AARCH64_H5:
return (*((
triton::uint16*)(this->
q5)));
728 case triton::arch::ID_REG_AARCH64_B5:
return (*((
triton::uint8*)(this->
q5)));
729 case triton::arch::ID_REG_AARCH64_Q6:
return triton::utils::cast<triton::uint128>(this->
q6);
730 case triton::arch::ID_REG_AARCH64_D6:
return (*((
triton::uint64*)(this->
q6)));
731 case triton::arch::ID_REG_AARCH64_S6:
return (*((
triton::uint32*)(this->
q6)));
732 case triton::arch::ID_REG_AARCH64_H6:
return (*((
triton::uint16*)(this->
q6)));
733 case triton::arch::ID_REG_AARCH64_B6:
return (*((
triton::uint8*)(this->
q6)));
734 case triton::arch::ID_REG_AARCH64_Q7:
return triton::utils::cast<triton::uint128>(this->
q7);
735 case triton::arch::ID_REG_AARCH64_D7:
return (*((
triton::uint64*)(this->
q7)));
736 case triton::arch::ID_REG_AARCH64_S7:
return (*((
triton::uint32*)(this->
q7)));
737 case triton::arch::ID_REG_AARCH64_H7:
return (*((
triton::uint16*)(this->
q7)));
738 case triton::arch::ID_REG_AARCH64_B7:
return (*((
triton::uint8*)(this->
q7)));
739 case triton::arch::ID_REG_AARCH64_Q8:
return triton::utils::cast<triton::uint128>(this->
q8);
740 case triton::arch::ID_REG_AARCH64_D8:
return (*((
triton::uint64*)(this->
q8)));
741 case triton::arch::ID_REG_AARCH64_S8:
return (*((
triton::uint32*)(this->
q8)));
742 case triton::arch::ID_REG_AARCH64_H8:
return (*((
triton::uint16*)(this->
q8)));
743 case triton::arch::ID_REG_AARCH64_B8:
return (*((
triton::uint8*)(this->
q8)));
744 case triton::arch::ID_REG_AARCH64_Q9:
return triton::utils::cast<triton::uint128>(this->
q9);
745 case triton::arch::ID_REG_AARCH64_D9:
return (*((
triton::uint64*)(this->
q9)));
746 case triton::arch::ID_REG_AARCH64_S9:
return (*((
triton::uint32*)(this->
q9)));
747 case triton::arch::ID_REG_AARCH64_H9:
return (*((
triton::uint16*)(this->
q9)));
748 case triton::arch::ID_REG_AARCH64_B9:
return (*((
triton::uint8*)(this->
q9)));
749 case triton::arch::ID_REG_AARCH64_Q10:
return triton::utils::cast<triton::uint128>(this->
q10);
753 case triton::arch::ID_REG_AARCH64_B10:
return (*((
triton::uint8*)(this->
q10)));
754 case triton::arch::ID_REG_AARCH64_Q11:
return triton::utils::cast<triton::uint128>(this->
q11);
758 case triton::arch::ID_REG_AARCH64_B11:
return (*((
triton::uint8*)(this->
q11)));
759 case triton::arch::ID_REG_AARCH64_Q12:
return triton::utils::cast<triton::uint128>(this->
q12);
763 case triton::arch::ID_REG_AARCH64_B12:
return (*((
triton::uint8*)(this->
q12)));
764 case triton::arch::ID_REG_AARCH64_Q13:
return triton::utils::cast<triton::uint128>(this->
q13);
768 case triton::arch::ID_REG_AARCH64_B13:
return (*((
triton::uint8*)(this->
q13)));
769 case triton::arch::ID_REG_AARCH64_Q14:
return triton::utils::cast<triton::uint128>(this->
q14);
773 case triton::arch::ID_REG_AARCH64_B14:
return (*((
triton::uint8*)(this->
q14)));
774 case triton::arch::ID_REG_AARCH64_Q15:
return triton::utils::cast<triton::uint128>(this->
q15);
778 case triton::arch::ID_REG_AARCH64_B15:
return (*((
triton::uint8*)(this->
q15)));
779 case triton::arch::ID_REG_AARCH64_Q16:
return triton::utils::cast<triton::uint128>(this->
q16);
783 case triton::arch::ID_REG_AARCH64_B16:
return (*((
triton::uint8*)(this->
q16)));
784 case triton::arch::ID_REG_AARCH64_Q17:
return triton::utils::cast<triton::uint128>(this->
q17);
788 case triton::arch::ID_REG_AARCH64_B17:
return (*((
triton::uint8*)(this->
q17)));
789 case triton::arch::ID_REG_AARCH64_Q18:
return triton::utils::cast<triton::uint128>(this->
q18);
793 case triton::arch::ID_REG_AARCH64_B18:
return (*((
triton::uint8*)(this->
q18)));
794 case triton::arch::ID_REG_AARCH64_Q19:
return triton::utils::cast<triton::uint128>(this->
q19);
798 case triton::arch::ID_REG_AARCH64_B19:
return (*((
triton::uint8*)(this->
q19)));
799 case triton::arch::ID_REG_AARCH64_Q20:
return triton::utils::cast<triton::uint128>(this->
q20);
803 case triton::arch::ID_REG_AARCH64_B20:
return (*((
triton::uint8*)(this->
q20)));
804 case triton::arch::ID_REG_AARCH64_Q21:
return triton::utils::cast<triton::uint128>(this->
q21);
808 case triton::arch::ID_REG_AARCH64_B21:
return (*((
triton::uint8*)(this->
q21)));
809 case triton::arch::ID_REG_AARCH64_Q22:
return triton::utils::cast<triton::uint128>(this->
q22);
813 case triton::arch::ID_REG_AARCH64_B22:
return (*((
triton::uint8*)(this->
q22)));
814 case triton::arch::ID_REG_AARCH64_Q23:
return triton::utils::cast<triton::uint128>(this->
q23);
818 case triton::arch::ID_REG_AARCH64_B23:
return (*((
triton::uint8*)(this->
q23)));
819 case triton::arch::ID_REG_AARCH64_Q24:
return triton::utils::cast<triton::uint128>(this->
q24);
823 case triton::arch::ID_REG_AARCH64_B24:
return (*((
triton::uint8*)(this->
q24)));
824 case triton::arch::ID_REG_AARCH64_Q25:
return triton::utils::cast<triton::uint128>(this->
q25);
828 case triton::arch::ID_REG_AARCH64_B25:
return (*((
triton::uint8*)(this->
q25)));
829 case triton::arch::ID_REG_AARCH64_Q26:
return triton::utils::cast<triton::uint128>(this->
q26);
833 case triton::arch::ID_REG_AARCH64_B26:
return (*((
triton::uint8*)(this->
q26)));
834 case triton::arch::ID_REG_AARCH64_Q27:
return triton::utils::cast<triton::uint128>(this->
q27);
838 case triton::arch::ID_REG_AARCH64_B27:
return (*((
triton::uint8*)(this->
q27)));
839 case triton::arch::ID_REG_AARCH64_Q28:
return triton::utils::cast<triton::uint128>(this->
q28);
843 case triton::arch::ID_REG_AARCH64_B28:
return (*((
triton::uint8*)(this->
q28)));
844 case triton::arch::ID_REG_AARCH64_Q29:
return triton::utils::cast<triton::uint128>(this->
q29);
848 case triton::arch::ID_REG_AARCH64_B29:
return (*((
triton::uint8*)(this->
q29)));
849 case triton::arch::ID_REG_AARCH64_Q30:
return triton::utils::cast<triton::uint128>(this->
q30);
853 case triton::arch::ID_REG_AARCH64_B30:
return (*((
triton::uint8*)(this->
q30)));
854 case triton::arch::ID_REG_AARCH64_Q31:
return triton::utils::cast<triton::uint128>(this->
q31);
858 case triton::arch::ID_REG_AARCH64_B31:
return (*((
triton::uint8*)(this->
q31)));
859 case triton::arch::ID_REG_AARCH64_V0:
return triton::utils::cast<triton::uint128>(this->
q0);
860 case triton::arch::ID_REG_AARCH64_V1:
return triton::utils::cast<triton::uint128>(this->
q1);
861 case triton::arch::ID_REG_AARCH64_V2:
return triton::utils::cast<triton::uint128>(this->
q2);
862 case triton::arch::ID_REG_AARCH64_V3:
return triton::utils::cast<triton::uint128>(this->
q3);
863 case triton::arch::ID_REG_AARCH64_V4:
return triton::utils::cast<triton::uint128>(this->
q4);
864 case triton::arch::ID_REG_AARCH64_V5:
return triton::utils::cast<triton::uint128>(this->
q5);
865 case triton::arch::ID_REG_AARCH64_V6:
return triton::utils::cast<triton::uint128>(this->
q6);
866 case triton::arch::ID_REG_AARCH64_V7:
return triton::utils::cast<triton::uint128>(this->
q7);
867 case triton::arch::ID_REG_AARCH64_V8:
return triton::utils::cast<triton::uint128>(this->
q8);
868 case triton::arch::ID_REG_AARCH64_V9:
return triton::utils::cast<triton::uint128>(this->
q9);
869 case triton::arch::ID_REG_AARCH64_V10:
return triton::utils::cast<triton::uint128>(this->
q10);
870 case triton::arch::ID_REG_AARCH64_V11:
return triton::utils::cast<triton::uint128>(this->
q11);
871 case triton::arch::ID_REG_AARCH64_V12:
return triton::utils::cast<triton::uint128>(this->
q12);
872 case triton::arch::ID_REG_AARCH64_V13:
return triton::utils::cast<triton::uint128>(this->
q13);
873 case triton::arch::ID_REG_AARCH64_V14:
return triton::utils::cast<triton::uint128>(this->
q14);
874 case triton::arch::ID_REG_AARCH64_V15:
return triton::utils::cast<triton::uint128>(this->
q15);
875 case triton::arch::ID_REG_AARCH64_V16:
return triton::utils::cast<triton::uint128>(this->
q16);
876 case triton::arch::ID_REG_AARCH64_V17:
return triton::utils::cast<triton::uint128>(this->
q17);
877 case triton::arch::ID_REG_AARCH64_V18:
return triton::utils::cast<triton::uint128>(this->
q18);
878 case triton::arch::ID_REG_AARCH64_V19:
return triton::utils::cast<triton::uint128>(this->
q19);
879 case triton::arch::ID_REG_AARCH64_V20:
return triton::utils::cast<triton::uint128>(this->
q20);
880 case triton::arch::ID_REG_AARCH64_V21:
return triton::utils::cast<triton::uint128>(this->
q21);
881 case triton::arch::ID_REG_AARCH64_V22:
return triton::utils::cast<triton::uint128>(this->
q22);
882 case triton::arch::ID_REG_AARCH64_V23:
return triton::utils::cast<triton::uint128>(this->
q23);
883 case triton::arch::ID_REG_AARCH64_V24:
return triton::utils::cast<triton::uint128>(this->
q24);
884 case triton::arch::ID_REG_AARCH64_V25:
return triton::utils::cast<triton::uint128>(this->
q25);
885 case triton::arch::ID_REG_AARCH64_V26:
return triton::utils::cast<triton::uint128>(this->
q26);
886 case triton::arch::ID_REG_AARCH64_V27:
return triton::utils::cast<triton::uint128>(this->
q27);
887 case triton::arch::ID_REG_AARCH64_V28:
return triton::utils::cast<triton::uint128>(this->
q28);
888 case triton::arch::ID_REG_AARCH64_V29:
return triton::utils::cast<triton::uint128>(this->
q29);
889 case triton::arch::ID_REG_AARCH64_V30:
return triton::utils::cast<triton::uint128>(this->
q30);
890 case triton::arch::ID_REG_AARCH64_V31:
return triton::utils::cast<triton::uint128>(this->
q31);
893 #define SYS_REG_SPEC(UPPER_NAME, LOWER_NAME, _2, _3, _4, _5) \
894 case triton::arch::ID_REG_AARCH64_##UPPER_NAME: return (*((triton::uint64*)(this->LOWER_NAME)));
895 #define REG_SPEC(_1, _2, _3, _4, _5, _6)
896 #define REG_SPEC_NO_CAPSTONE(_1, _2, _3, _4, _5, _6)
897 #include "triton/aarch64.spec"
953 throw triton::exceptions::Register(
"AArch64Cpu::setConcreteRegisterValue(): You cannot set this concrete value (too big) to this register.");
955 if (execCallbacks && this->callbacks)
958 switch (reg.
getId()) {
1026 case triton::arch::ID_REG_AARCH64_XZR:
break;
1027 case triton::arch::ID_REG_AARCH64_WZR:
break;
1029 case triton::arch::ID_REG_AARCH64_N: {
1031 (*((
triton::uint32*)(this->
spsr))) = !value.is_zero() ? b | (1 << 31) : b & ~(1 << 31);
1034 case triton::arch::ID_REG_AARCH64_Z: {
1036 (*((
triton::uint32*)(this->
spsr))) = !value.is_zero() ? b | (1 << 30) : b & ~(1 << 30);
1039 case triton::arch::ID_REG_AARCH64_C: {
1041 (*((
triton::uint32*)(this->
spsr))) = !value.is_zero() ? b | (1 << 29) : b & ~(1 << 29);
1044 case triton::arch::ID_REG_AARCH64_V: {
1046 (*((
triton::uint32*)(this->
spsr))) = !value.is_zero() ? b | (1 << 28) : b & ~(1 << 28);
1248 #define SYS_REG_SPEC(UPPER_NAME, LOWER_NAME, _2, _3, _4, _5) \
1249 case triton::arch::ID_REG_AARCH64_##UPPER_NAME: (*((triton::uint64*)(this->LOWER_NAME))) = static_cast<triton::uint64>(value); break;
1250 #define REG_SPEC(_1, _2, _3, _4, _5, _6)
1251 #define REG_SPEC_NO_CAPSTONE(_1, _2, _3, _4, _5, _6)
1252 #include "triton/aarch64.spec"