123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410 |
- package arm
- import "github.com/twitchyliquid64/golang-asm/obj"
- const (
- NSNAME = 8
- NSYM = 50
- NREG = 16
- )
- const (
- REGARG = -1
- )
- const (
- REG_R0 = obj.RBaseARM + iota
- REG_R1
- REG_R2
- REG_R3
- REG_R4
- REG_R5
- REG_R6
- REG_R7
- REG_R8
- REG_R9
- REG_R10
- REG_R11
- REG_R12
- REG_R13
- REG_R14
- REG_R15
- REG_F0
- REG_F1
- REG_F2
- REG_F3
- REG_F4
- REG_F5
- REG_F6
- REG_F7
- REG_F8
- REG_F9
- REG_F10
- REG_F11
- REG_F12
- REG_F13
- REG_F14
- REG_F15
- REG_FPSR
- REG_FPCR
- REG_CPSR
- REG_SPSR
- REGRET = REG_R0
-
-
-
- REGEXT = REG_R10
-
- REGG = REGEXT - 0
- REGM = REGEXT - 1
- REGCTXT = REG_R7
- REGTMP = REG_R11
- REGSP = REG_R13
- REGLINK = REG_R14
- REGPC = REG_R15
- NFREG = 16
-
-
- FREGRET = REG_F0
- FREGEXT = REG_F7
- FREGTMP = REG_F15
- )
- var ARMDWARFRegisters = map[int16]int16{}
- func init() {
-
- f := func(from, to, base, step int16) {
- for r := int16(from); r <= to; r++ {
- ARMDWARFRegisters[r] = step*(r-from) + base
- }
- }
- f(REG_R0, REG_R15, 0, 1)
- f(REG_F0, REG_F15, 64, 2)
- }
- const (
- REG_SPECIAL = obj.RBaseARM + 1<<9 + iota
- REG_MB_SY
- REG_MB_ST
- REG_MB_ISH
- REG_MB_ISHST
- REG_MB_NSH
- REG_MB_NSHST
- REG_MB_OSH
- REG_MB_OSHST
- MAXREG
- )
- const (
- C_NONE = iota
- C_REG
- C_REGREG
- C_REGREG2
- C_REGLIST
- C_SHIFT
- C_SHIFTADDR
- C_FREG
- C_PSR
- C_FCR
- C_SPR
- C_RCON
- C_NCON
- C_RCON2A
- C_RCON2S
- C_SCON
- C_LCON
- C_LCONADDR
- C_ZFCON
- C_SFCON
- C_LFCON
- C_RACON
- C_LACON
- C_SBRA
- C_LBRA
- C_HAUTO
- C_FAUTO
- C_HFAUTO
- C_SAUTO
- C_LAUTO
- C_HOREG
- C_FOREG
- C_HFOREG
- C_SOREG
- C_ROREG
- C_SROREG
- C_LOREG
- C_PC
- C_SP
- C_HREG
- C_ADDR
-
-
- C_TLS_LE
-
-
-
- C_TLS_IE
- C_TEXTSIZE
- C_GOK
- C_NCLASS
- )
- const (
- AAND = obj.ABaseARM + obj.A_ARCHSPECIFIC + iota
- AEOR
- ASUB
- ARSB
- AADD
- AADC
- ASBC
- ARSC
- ATST
- ATEQ
- ACMP
- ACMN
- AORR
- ABIC
- AMVN
-
- ABEQ
- ABNE
- ABCS
- ABHS
- ABCC
- ABLO
- ABMI
- ABPL
- ABVS
- ABVC
- ABHI
- ABLS
- ABGE
- ABLT
- ABGT
- ABLE
- AMOVWD
- AMOVWF
- AMOVDW
- AMOVFW
- AMOVFD
- AMOVDF
- AMOVF
- AMOVD
- ACMPF
- ACMPD
- AADDF
- AADDD
- ASUBF
- ASUBD
- AMULF
- AMULD
- ANMULF
- ANMULD
- AMULAF
- AMULAD
- ANMULAF
- ANMULAD
- AMULSF
- AMULSD
- ANMULSF
- ANMULSD
- AFMULAF
- AFMULAD
- AFNMULAF
- AFNMULAD
- AFMULSF
- AFMULSD
- AFNMULSF
- AFNMULSD
- ADIVF
- ADIVD
- ASQRTF
- ASQRTD
- AABSF
- AABSD
- ANEGF
- ANEGD
- ASRL
- ASRA
- ASLL
- AMULU
- ADIVU
- AMUL
- AMMUL
- ADIV
- AMOD
- AMODU
- ADIVHW
- ADIVUHW
- AMOVB
- AMOVBS
- AMOVBU
- AMOVH
- AMOVHS
- AMOVHU
- AMOVW
- AMOVM
- ASWPBU
- ASWPW
- ARFE
- ASWI
- AMULA
- AMULS
- AMMULA
- AMMULS
- AWORD
- AMULL
- AMULAL
- AMULLU
- AMULALU
- ABX
- ABXRET
- ADWORD
- ALDREX
- ASTREX
- ALDREXD
- ASTREXD
- ADMB
- APLD
- ACLZ
- AREV
- AREV16
- AREVSH
- ARBIT
- AXTAB
- AXTAH
- AXTABU
- AXTAHU
- ABFX
- ABFXU
- ABFC
- ABFI
- AMULWT
- AMULWB
- AMULBB
- AMULAWT
- AMULAWB
- AMULABB
- AMRC
- ALAST
-
- AB = obj.AJMP
- ABL = obj.ACALL
- )
- const (
- C_SCOND = (1 << 4) - 1
- C_SBIT = 1 << 4
- C_PBIT = 1 << 5
- C_WBIT = 1 << 6
- C_FBIT = 1 << 7
- C_UBIT = 1 << 7
-
-
-
- C_SCOND_XOR = 14
- C_SCOND_EQ = 0 ^ C_SCOND_XOR
- C_SCOND_NE = 1 ^ C_SCOND_XOR
- C_SCOND_HS = 2 ^ C_SCOND_XOR
- C_SCOND_LO = 3 ^ C_SCOND_XOR
- C_SCOND_MI = 4 ^ C_SCOND_XOR
- C_SCOND_PL = 5 ^ C_SCOND_XOR
- C_SCOND_VS = 6 ^ C_SCOND_XOR
- C_SCOND_VC = 7 ^ C_SCOND_XOR
- C_SCOND_HI = 8 ^ C_SCOND_XOR
- C_SCOND_LS = 9 ^ C_SCOND_XOR
- C_SCOND_GE = 10 ^ C_SCOND_XOR
- C_SCOND_LT = 11 ^ C_SCOND_XOR
- C_SCOND_GT = 12 ^ C_SCOND_XOR
- C_SCOND_LE = 13 ^ C_SCOND_XOR
- C_SCOND_NONE = 14 ^ C_SCOND_XOR
- C_SCOND_NV = 15 ^ C_SCOND_XOR
-
- SHIFT_LL = 0 << 5
- SHIFT_LR = 1 << 5
- SHIFT_AR = 2 << 5
- SHIFT_RR = 3 << 5
- )
|