608 if (execCallbacks && this->callbacks)
611 switch (reg.
getId()) {
612 case triton::arch::ID_REG_AARCH64_X0:
return (*((
triton::uint64*)(this->
x0)));
613 case triton::arch::ID_REG_AARCH64_W0:
return (*((
triton::uint32*)(this->
x0)));
614 case triton::arch::ID_REG_AARCH64_X1:
return (*((
triton::uint64*)(this->
x1)));
615 case triton::arch::ID_REG_AARCH64_W1:
return (*((
triton::uint32*)(this->
x1)));
616 case triton::arch::ID_REG_AARCH64_X2:
return (*((
triton::uint64*)(this->
x2)));
617 case triton::arch::ID_REG_AARCH64_W2:
return (*((
triton::uint32*)(this->
x2)));
618 case triton::arch::ID_REG_AARCH64_X3:
return (*((
triton::uint64*)(this->
x3)));
619 case triton::arch::ID_REG_AARCH64_W3:
return (*((
triton::uint32*)(this->
x3)));
620 case triton::arch::ID_REG_AARCH64_X4:
return (*((
triton::uint64*)(this->
x4)));
621 case triton::arch::ID_REG_AARCH64_W4:
return (*((
triton::uint32*)(this->
x4)));
622 case triton::arch::ID_REG_AARCH64_X5:
return (*((
triton::uint64*)(this->
x5)));
623 case triton::arch::ID_REG_AARCH64_W5:
return (*((
triton::uint32*)(this->
x5)));
624 case triton::arch::ID_REG_AARCH64_X6:
return (*((
triton::uint64*)(this->
x6)));
625 case triton::arch::ID_REG_AARCH64_W6:
return (*((
triton::uint32*)(this->
x6)));
626 case triton::arch::ID_REG_AARCH64_X7:
return (*((
triton::uint64*)(this->
x7)));
627 case triton::arch::ID_REG_AARCH64_W7:
return (*((
triton::uint32*)(this->
x7)));
628 case triton::arch::ID_REG_AARCH64_X8:
return (*((
triton::uint64*)(this->
x8)));
629 case triton::arch::ID_REG_AARCH64_W8:
return (*((
triton::uint32*)(this->
x8)));
630 case triton::arch::ID_REG_AARCH64_X9:
return (*((
triton::uint64*)(this->
x9)));
631 case triton::arch::ID_REG_AARCH64_W9:
return (*((
triton::uint32*)(this->
x9)));
674 case triton::arch::ID_REG_AARCH64_SP:
return (*((
triton::uint64*)(this->
sp)));
675 case triton::arch::ID_REG_AARCH64_WSP:
return (*((
triton::uint32*)(this->
sp)));
676 case triton::arch::ID_REG_AARCH64_PC:
return (*((
triton::uint64*)(this->
pc)));
677 case triton::arch::ID_REG_AARCH64_XZR:
return 0;
678 case triton::arch::ID_REG_AARCH64_WZR:
return 0;
680 case triton::arch::ID_REG_AARCH64_N:
return (((*((
triton::uint32*)(this->
spsr))) >> 31) & 1);
681 case triton::arch::ID_REG_AARCH64_Z:
return (((*((
triton::uint32*)(this->
spsr))) >> 30) & 1);
682 case triton::arch::ID_REG_AARCH64_C:
return (((*((
triton::uint32*)(this->
spsr))) >> 29) & 1);
683 case triton::arch::ID_REG_AARCH64_V:
return (((*((
triton::uint32*)(this->
spsr))) >> 28) & 1);
684 case triton::arch::ID_REG_AARCH64_Q0:
return triton::utils::cast<triton::uint128>(this->
q0);
685 case triton::arch::ID_REG_AARCH64_D0:
return (*((
triton::uint64*)(this->
q0)));
686 case triton::arch::ID_REG_AARCH64_S0:
return (*((
triton::uint32*)(this->
q0)));
687 case triton::arch::ID_REG_AARCH64_H0:
return (*((
triton::uint16*)(this->
q0)));
688 case triton::arch::ID_REG_AARCH64_B0:
return (*((
triton::uint8*)(this->
q0)));
689 case triton::arch::ID_REG_AARCH64_Q1:
return triton::utils::cast<triton::uint128>(this->
q1);
690 case triton::arch::ID_REG_AARCH64_D1:
return (*((
triton::uint64*)(this->
q1)));
691 case triton::arch::ID_REG_AARCH64_S1:
return (*((
triton::uint32*)(this->
q1)));
692 case triton::arch::ID_REG_AARCH64_H1:
return (*((
triton::uint16*)(this->
q1)));
693 case triton::arch::ID_REG_AARCH64_B1:
return (*((
triton::uint8*)(this->
q1)));
694 case triton::arch::ID_REG_AARCH64_Q2:
return triton::utils::cast<triton::uint128>(this->
q2);
695 case triton::arch::ID_REG_AARCH64_D2:
return (*((
triton::uint64*)(this->
q2)));
696 case triton::arch::ID_REG_AARCH64_S2:
return (*((
triton::uint32*)(this->
q2)));
697 case triton::arch::ID_REG_AARCH64_H2:
return (*((
triton::uint16*)(this->
q2)));
698 case triton::arch::ID_REG_AARCH64_B2:
return (*((
triton::uint8*)(this->
q2)));
699 case triton::arch::ID_REG_AARCH64_Q3:
return triton::utils::cast<triton::uint128>(this->
q3);
700 case triton::arch::ID_REG_AARCH64_D3:
return (*((
triton::uint64*)(this->
q3)));
701 case triton::arch::ID_REG_AARCH64_S3:
return (*((
triton::uint32*)(this->
q3)));
702 case triton::arch::ID_REG_AARCH64_H3:
return (*((
triton::uint16*)(this->
q3)));
703 case triton::arch::ID_REG_AARCH64_B3:
return (*((
triton::uint8*)(this->
q3)));
704 case triton::arch::ID_REG_AARCH64_Q4:
return triton::utils::cast<triton::uint128>(this->
q4);
705 case triton::arch::ID_REG_AARCH64_D4:
return (*((
triton::uint64*)(this->
q4)));
706 case triton::arch::ID_REG_AARCH64_S4:
return (*((
triton::uint32*)(this->
q4)));
707 case triton::arch::ID_REG_AARCH64_H4:
return (*((
triton::uint16*)(this->
q4)));
708 case triton::arch::ID_REG_AARCH64_B4:
return (*((
triton::uint8*)(this->
q4)));
709 case triton::arch::ID_REG_AARCH64_Q5:
return triton::utils::cast<triton::uint128>(this->
q5);
710 case triton::arch::ID_REG_AARCH64_D5:
return (*((
triton::uint64*)(this->
q5)));
711 case triton::arch::ID_REG_AARCH64_S5:
return (*((
triton::uint32*)(this->
q5)));
712 case triton::arch::ID_REG_AARCH64_H5:
return (*((
triton::uint16*)(this->
q5)));
713 case triton::arch::ID_REG_AARCH64_B5:
return (*((
triton::uint8*)(this->
q5)));
714 case triton::arch::ID_REG_AARCH64_Q6:
return triton::utils::cast<triton::uint128>(this->
q6);
715 case triton::arch::ID_REG_AARCH64_D6:
return (*((
triton::uint64*)(this->
q6)));
716 case triton::arch::ID_REG_AARCH64_S6:
return (*((
triton::uint32*)(this->
q6)));
717 case triton::arch::ID_REG_AARCH64_H6:
return (*((
triton::uint16*)(this->
q6)));
718 case triton::arch::ID_REG_AARCH64_B6:
return (*((
triton::uint8*)(this->
q6)));
719 case triton::arch::ID_REG_AARCH64_Q7:
return triton::utils::cast<triton::uint128>(this->
q7);
720 case triton::arch::ID_REG_AARCH64_D7:
return (*((
triton::uint64*)(this->
q7)));
721 case triton::arch::ID_REG_AARCH64_S7:
return (*((
triton::uint32*)(this->
q7)));
722 case triton::arch::ID_REG_AARCH64_H7:
return (*((
triton::uint16*)(this->
q7)));
723 case triton::arch::ID_REG_AARCH64_B7:
return (*((
triton::uint8*)(this->
q7)));
724 case triton::arch::ID_REG_AARCH64_Q8:
return triton::utils::cast<triton::uint128>(this->
q8);
725 case triton::arch::ID_REG_AARCH64_D8:
return (*((
triton::uint64*)(this->
q8)));
726 case triton::arch::ID_REG_AARCH64_S8:
return (*((
triton::uint32*)(this->
q8)));
727 case triton::arch::ID_REG_AARCH64_H8:
return (*((
triton::uint16*)(this->
q8)));
728 case triton::arch::ID_REG_AARCH64_B8:
return (*((
triton::uint8*)(this->
q8)));
729 case triton::arch::ID_REG_AARCH64_Q9:
return triton::utils::cast<triton::uint128>(this->
q9);
730 case triton::arch::ID_REG_AARCH64_D9:
return (*((
triton::uint64*)(this->
q9)));
731 case triton::arch::ID_REG_AARCH64_S9:
return (*((
triton::uint32*)(this->
q9)));
732 case triton::arch::ID_REG_AARCH64_H9:
return (*((
triton::uint16*)(this->
q9)));
733 case triton::arch::ID_REG_AARCH64_B9:
return (*((
triton::uint8*)(this->
q9)));
734 case triton::arch::ID_REG_AARCH64_Q10:
return triton::utils::cast<triton::uint128>(this->
q10);
738 case triton::arch::ID_REG_AARCH64_B10:
return (*((
triton::uint8*)(this->
q10)));
739 case triton::arch::ID_REG_AARCH64_Q11:
return triton::utils::cast<triton::uint128>(this->
q11);
743 case triton::arch::ID_REG_AARCH64_B11:
return (*((
triton::uint8*)(this->
q11)));
744 case triton::arch::ID_REG_AARCH64_Q12:
return triton::utils::cast<triton::uint128>(this->
q12);
748 case triton::arch::ID_REG_AARCH64_B12:
return (*((
triton::uint8*)(this->
q12)));
749 case triton::arch::ID_REG_AARCH64_Q13:
return triton::utils::cast<triton::uint128>(this->
q13);
753 case triton::arch::ID_REG_AARCH64_B13:
return (*((
triton::uint8*)(this->
q13)));
754 case triton::arch::ID_REG_AARCH64_Q14:
return triton::utils::cast<triton::uint128>(this->
q14);
758 case triton::arch::ID_REG_AARCH64_B14:
return (*((
triton::uint8*)(this->
q14)));
759 case triton::arch::ID_REG_AARCH64_Q15:
return triton::utils::cast<triton::uint128>(this->
q15);
763 case triton::arch::ID_REG_AARCH64_B15:
return (*((
triton::uint8*)(this->
q15)));
764 case triton::arch::ID_REG_AARCH64_Q16:
return triton::utils::cast<triton::uint128>(this->
q16);
768 case triton::arch::ID_REG_AARCH64_B16:
return (*((
triton::uint8*)(this->
q16)));
769 case triton::arch::ID_REG_AARCH64_Q17:
return triton::utils::cast<triton::uint128>(this->
q17);
773 case triton::arch::ID_REG_AARCH64_B17:
return (*((
triton::uint8*)(this->
q17)));
774 case triton::arch::ID_REG_AARCH64_Q18:
return triton::utils::cast<triton::uint128>(this->
q18);
778 case triton::arch::ID_REG_AARCH64_B18:
return (*((
triton::uint8*)(this->
q18)));
779 case triton::arch::ID_REG_AARCH64_Q19:
return triton::utils::cast<triton::uint128>(this->
q19);
783 case triton::arch::ID_REG_AARCH64_B19:
return (*((
triton::uint8*)(this->
q19)));
784 case triton::arch::ID_REG_AARCH64_Q20:
return triton::utils::cast<triton::uint128>(this->
q20);
788 case triton::arch::ID_REG_AARCH64_B20:
return (*((
triton::uint8*)(this->
q20)));
789 case triton::arch::ID_REG_AARCH64_Q21:
return triton::utils::cast<triton::uint128>(this->
q21);
793 case triton::arch::ID_REG_AARCH64_B21:
return (*((
triton::uint8*)(this->
q21)));
794 case triton::arch::ID_REG_AARCH64_Q22:
return triton::utils::cast<triton::uint128>(this->
q22);
798 case triton::arch::ID_REG_AARCH64_B22:
return (*((
triton::uint8*)(this->
q22)));
799 case triton::arch::ID_REG_AARCH64_Q23:
return triton::utils::cast<triton::uint128>(this->
q23);
803 case triton::arch::ID_REG_AARCH64_B23:
return (*((
triton::uint8*)(this->
q23)));
804 case triton::arch::ID_REG_AARCH64_Q24:
return triton::utils::cast<triton::uint128>(this->
q24);
808 case triton::arch::ID_REG_AARCH64_B24:
return (*((
triton::uint8*)(this->
q24)));
809 case triton::arch::ID_REG_AARCH64_Q25:
return triton::utils::cast<triton::uint128>(this->
q25);
813 case triton::arch::ID_REG_AARCH64_B25:
return (*((
triton::uint8*)(this->
q25)));
814 case triton::arch::ID_REG_AARCH64_Q26:
return triton::utils::cast<triton::uint128>(this->
q26);
818 case triton::arch::ID_REG_AARCH64_B26:
return (*((
triton::uint8*)(this->
q26)));
819 case triton::arch::ID_REG_AARCH64_Q27:
return triton::utils::cast<triton::uint128>(this->
q27);
823 case triton::arch::ID_REG_AARCH64_B27:
return (*((
triton::uint8*)(this->
q27)));
824 case triton::arch::ID_REG_AARCH64_Q28:
return triton::utils::cast<triton::uint128>(this->
q28);
828 case triton::arch::ID_REG_AARCH64_B28:
return (*((
triton::uint8*)(this->
q28)));
829 case triton::arch::ID_REG_AARCH64_Q29:
return triton::utils::cast<triton::uint128>(this->
q29);
833 case triton::arch::ID_REG_AARCH64_B29:
return (*((
triton::uint8*)(this->
q29)));
834 case triton::arch::ID_REG_AARCH64_Q30:
return triton::utils::cast<triton::uint128>(this->
q30);
838 case triton::arch::ID_REG_AARCH64_B30:
return (*((
triton::uint8*)(this->
q30)));
839 case triton::arch::ID_REG_AARCH64_Q31:
return triton::utils::cast<triton::uint128>(this->
q31);
843 case triton::arch::ID_REG_AARCH64_B31:
return (*((
triton::uint8*)(this->
q31)));
844 case triton::arch::ID_REG_AARCH64_V0:
return triton::utils::cast<triton::uint128>(this->
q0);
845 case triton::arch::ID_REG_AARCH64_V1:
return triton::utils::cast<triton::uint128>(this->
q1);
846 case triton::arch::ID_REG_AARCH64_V2:
return triton::utils::cast<triton::uint128>(this->
q2);
847 case triton::arch::ID_REG_AARCH64_V3:
return triton::utils::cast<triton::uint128>(this->
q3);
848 case triton::arch::ID_REG_AARCH64_V4:
return triton::utils::cast<triton::uint128>(this->
q4);
849 case triton::arch::ID_REG_AARCH64_V5:
return triton::utils::cast<triton::uint128>(this->
q5);
850 case triton::arch::ID_REG_AARCH64_V6:
return triton::utils::cast<triton::uint128>(this->
q6);
851 case triton::arch::ID_REG_AARCH64_V7:
return triton::utils::cast<triton::uint128>(this->
q7);
852 case triton::arch::ID_REG_AARCH64_V8:
return triton::utils::cast<triton::uint128>(this->
q8);
853 case triton::arch::ID_REG_AARCH64_V9:
return triton::utils::cast<triton::uint128>(this->
q9);
854 case triton::arch::ID_REG_AARCH64_V10:
return triton::utils::cast<triton::uint128>(this->
q10);
855 case triton::arch::ID_REG_AARCH64_V11:
return triton::utils::cast<triton::uint128>(this->
q11);
856 case triton::arch::ID_REG_AARCH64_V12:
return triton::utils::cast<triton::uint128>(this->
q12);
857 case triton::arch::ID_REG_AARCH64_V13:
return triton::utils::cast<triton::uint128>(this->
q13);
858 case triton::arch::ID_REG_AARCH64_V14:
return triton::utils::cast<triton::uint128>(this->
q14);
859 case triton::arch::ID_REG_AARCH64_V15:
return triton::utils::cast<triton::uint128>(this->
q15);
860 case triton::arch::ID_REG_AARCH64_V16:
return triton::utils::cast<triton::uint128>(this->
q16);
861 case triton::arch::ID_REG_AARCH64_V17:
return triton::utils::cast<triton::uint128>(this->
q17);
862 case triton::arch::ID_REG_AARCH64_V18:
return triton::utils::cast<triton::uint128>(this->
q18);
863 case triton::arch::ID_REG_AARCH64_V19:
return triton::utils::cast<triton::uint128>(this->
q19);
864 case triton::arch::ID_REG_AARCH64_V20:
return triton::utils::cast<triton::uint128>(this->
q20);
865 case triton::arch::ID_REG_AARCH64_V21:
return triton::utils::cast<triton::uint128>(this->
q21);
866 case triton::arch::ID_REG_AARCH64_V22:
return triton::utils::cast<triton::uint128>(this->
q22);
867 case triton::arch::ID_REG_AARCH64_V23:
return triton::utils::cast<triton::uint128>(this->
q23);
868 case triton::arch::ID_REG_AARCH64_V24:
return triton::utils::cast<triton::uint128>(this->
q24);
869 case triton::arch::ID_REG_AARCH64_V25:
return triton::utils::cast<triton::uint128>(this->
q25);
870 case triton::arch::ID_REG_AARCH64_V26:
return triton::utils::cast<triton::uint128>(this->
q26);
871 case triton::arch::ID_REG_AARCH64_V27:
return triton::utils::cast<triton::uint128>(this->
q27);
872 case triton::arch::ID_REG_AARCH64_V28:
return triton::utils::cast<triton::uint128>(this->
q28);
873 case triton::arch::ID_REG_AARCH64_V29:
return triton::utils::cast<triton::uint128>(this->
q29);
874 case triton::arch::ID_REG_AARCH64_V30:
return triton::utils::cast<triton::uint128>(this->
q30);
875 case triton::arch::ID_REG_AARCH64_V31:
return triton::utils::cast<triton::uint128>(this->
q31);
878 #define SYS_REG_SPEC(UPPER_NAME, LOWER_NAME, _2, _3, _4, _5) \
879 case triton::arch::ID_REG_AARCH64_##UPPER_NAME: return (*((triton::uint64*)(this->LOWER_NAME)));
880 #define REG_SPEC(_1, _2, _3, _4, _5, _6)
881 #define REG_SPEC_NO_CAPSTONE(_1, _2, _3, _4, _5, _6)
882 #include "triton/aarch64.spec"
938 throw triton::exceptions::Register(
"AArch64Cpu::setConcreteRegisterValue(): You cannot set this concrete value (too big) to this register.");
940 if (execCallbacks && this->callbacks)
943 switch (reg.
getId()) {
1011 case triton::arch::ID_REG_AARCH64_XZR:
break;
1012 case triton::arch::ID_REG_AARCH64_WZR:
break;
1014 case triton::arch::ID_REG_AARCH64_N: {
1016 (*((
triton::uint32*)(this->
spsr))) = !value.is_zero() ? b | (1 << 31) : b & ~(1 << 31);
1019 case triton::arch::ID_REG_AARCH64_Z: {
1021 (*((
triton::uint32*)(this->
spsr))) = !value.is_zero() ? b | (1 << 30) : b & ~(1 << 30);
1024 case triton::arch::ID_REG_AARCH64_C: {
1026 (*((
triton::uint32*)(this->
spsr))) = !value.is_zero() ? b | (1 << 29) : b & ~(1 << 29);
1029 case triton::arch::ID_REG_AARCH64_V: {
1031 (*((
triton::uint32*)(this->
spsr))) = !value.is_zero() ? b | (1 << 28) : b & ~(1 << 28);
1233 #define SYS_REG_SPEC(UPPER_NAME, LOWER_NAME, _2, _3, _4, _5) \
1234 case triton::arch::ID_REG_AARCH64_##UPPER_NAME: (*((triton::uint64*)(this->LOWER_NAME))) = static_cast<triton::uint64>(value); break;
1235 #define REG_SPEC(_1, _2, _3, _4, _5, _6)
1236 #define REG_SPEC_NO_CAPSTONE(_1, _2, _3, _4, _5, _6)
1237 #include "triton/aarch64.spec"