armins.dat 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445
  1. ;
  2. ; Table of assembler instructions for Free Pascal
  3. ; adapted from Netwide Assembler by Florian Klaempfl
  4. ;
  5. ;
  6. ; The Netwide Assembler is copyright (C) 1996 Simon Tatham and
  7. ; Julian Hall. All rights reserved. The software is
  8. ; redistributable under the licence given in the file "Licence"
  9. ; distributed in the NASM archive.
  10. ;
  11. ; Format of file: all four fields must be present on every functional
  12. ; line. Hence `void' for no-operand instructions, and `\0' for such
  13. ; as EQU. If the last three fields are all `ignore', no action is
  14. ; taken except to register the opcode as being present.
  15. ;
  16. ;
  17. ; 'ignore' means no instruc
  18. ; 'void' means instruc with zero operands
  19. ;
  20. ; Third field has a first byte indicating how to
  21. ; put together the bits, and then some codes
  22. ; that may be used at will (see assemble.c)
  23. ;
  24. ; \1 - 24 bit pc-rel offset [B, BL]
  25. ; \2 - 24 bit imm value [SWI]
  26. ; \3 - 3 byte code [BX]
  27. ;
  28. ; \4 - reg,reg,reg [AND,EOR,SUB,RSB,ADD,ADC,SBC,RSC,ORR,BIC]
  29. ; \5 - reg,reg,reg,<shift>reg [-"-]
  30. ; \6 - reg,reg,reg,<shift>#imm [-"-]
  31. ; \7 - reg,reg,#imm [-"-]
  32. ;
  33. ; \x8 - reg,reg [MOV,MVN]
  34. ; \x9 - reg,reg,<shift>reg [-"-]
  35. ; \xA - reg,reg,<shift>#imm [-"-]
  36. ; \xB - reg,#imm [-"-]
  37. ;
  38. ; \xC - reg,reg [CMP,CMN,TEQ,TST]
  39. ; \xD - reg,reg,<shift>reg [-"-]
  40. ; \xE - reg,reg,<shift>#imm [-"-]
  41. ; \xF - reg,#imm [-"-]
  42. ;
  43. ; \xFx - floating point instructions
  44. ; Floating point instruction format information, taken from the linux kernel,
  45. ; for detailed tables, see aasmcpu.pas
  46. ;
  47. ; ARM Floating Point Instruction Classes
  48. ; | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
  49. ; |c o n d|1 1 0 P|U|u|W|L| Rn |v| Fd |0|0|0|1| o f f s e t | CPDT
  50. ; |c o n d|1 1 0 P|U|w|W|L| Rn |x| Fd |0|0|1|0| o f f s e t | CPDT (copro 2)
  51. ; | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
  52. ; |c o n d|1 1 1 0|a|b|c|d|e| Fn |j| Fd |0|0|0|1|f|g|h|0|i| Fm | CPDO
  53. ; |c o n d|1 1 1 0|a|b|c|L|e| Fn | Rd |0|0|0|1|f|g|h|1|i| Fm | CPRT
  54. ; |c o n d|1 1 1 0|a|b|c|1|e| Fn |1|1|1|1|0|0|0|1|f|g|h|1|i| Fm | comparisons
  55. ; | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
  56. ;
  57. ; CPDT data transfer instructions
  58. ; LDF, STF, LFM (copro 2), SFM (copro 2)
  59. ;
  60. ; CPDO dyadic arithmetic instructions
  61. ; ADF, MUF, SUF, RSF, DVF, RDF,
  62. ; POW, RPW, RMF, FML, FDV, FRD, POL
  63. ;
  64. ; CPDO monadic arithmetic instructions
  65. ; MVF, MNF, ABS, RND, SQT, LOG, LGN, EXP,
  66. ; SIN, COS, TAN, ASN, ACS, ATN, URD, NRM
  67. ;
  68. ; CPRT joint arithmetic/data transfer instructions
  69. ; FIX (arithmetic followed by load/store)
  70. ; FLT (load/store followed by arithmetic)
  71. ; CMF, CNF CMFE, CNFE (comparisons)
  72. ; WFS, RFS (write/read floating point status register)
  73. ; WFC, RFC (write/read floating point control register)
  74. ; \xF0 - CPDT
  75. ; code 1: copro (1/2)
  76. ; code 2: load/store bit
  77. ; \xF1 - CPDO
  78. ; \xF2 - CPDO monadic
  79. ; \xF3 - CPRT
  80. ; \xF4 - CPRT comparison
  81. ;
  82. ; \xFF - fix me
  83. ;
  84. [NONE]
  85. void void none
  86. [ABScc]
  87. [ACScc]
  88. [ASNcc]
  89. [ATNcc]
  90. [ADCcc]
  91. reg32,reg32,reg32 \4\x0\xA0 ARM7
  92. reg32,reg32,reg32,reg32 \5\x0\xA0 ARM7
  93. reg32,reg32,reg32,imm \6\x0\xA0 ARM7
  94. reg32,reg32,imm \7\x2\xA0 ARM7
  95. [ADDcc]
  96. reg32,reg32,reg32 \4\x0\x80 ARM7
  97. reg32,reg32,reg32,reg32 \5\x0\x80 ARM7
  98. reg32,reg32,reg32,imm \6\x0\x80 ARM7
  99. reg32,reg32,imm \7\x2\x80 ARM7
  100. [ADFcc]
  101. [ANDcc]
  102. reg32,reg32,reg32 \4\x0\x00 ARM7
  103. reg32,reg32,reg32,reg32 \5\x0\x00 ARM7
  104. reg32,reg32,reg32,imm \6\x0\x00 ARM7
  105. reg32,reg32,imm \7\x2\x00 ARM7
  106. [Bcc]
  107. mem32 \1\x0A ARM7
  108. imm24 \1\x0A ARM7
  109. [BICcc]
  110. reg32,reg32,reg32 \4\x1\xC0 ARM7
  111. reg32,reg32,reg32,reg32 \5\x1\xC0 ARM7
  112. reg32,reg32,reg32,imm \6\x1\xC0 ARM7
  113. reg32,reg32,imm \7\x3\xC0 ARM7
  114. [BLcc]
  115. mem32 \1\x0B ARM7
  116. imm24 \1\x0B ARM7
  117. [BLX]
  118. mem32 \xff ARM7
  119. imm24 \xff ARM7
  120. [BKPTcc]
  121. [BXcc]
  122. reg32 \3\x01\x2F\xFF\x10 ARM7
  123. [CDP]
  124. reg8,reg8 \300\1\x10\101 ARM7
  125. [CMFcc]
  126. [CMFEcc]
  127. [CMNcc]
  128. reg32,reg32 \xC\x1\x60 ARM7
  129. reg32,reg32,reg32 \xD\x1\x60 ARM7
  130. reg32,reg32,imm \xE\x1\x60 ARM7
  131. reg32,imm \xF\x3\x60 ARM7
  132. [CMPcc]
  133. reg32,reg32 \xC\x1\x40 ARM7
  134. reg32,reg32,reg32 \xD\x1\x40 ARM7
  135. reg32,reg32,imm \xE\x1\x40 ARM7
  136. reg32,imm \xF\x3\x40 ARM7
  137. [CLZcc]
  138. reg32,reg32 \x27\x01\x01 ARM7
  139. [CNFcc]
  140. [COScc]
  141. [DVFcc]
  142. [EORcc]
  143. reg32,reg32,reg32 \4\x0\x20 ARM7
  144. reg32,reg32,reg32,reg32 \5\x0\x20 ARM7
  145. reg32,reg32,reg32,imm \6\x0\x20 ARM7
  146. reg32,reg32,imm \7\x2\x20 ARM7
  147. [EXPcc]
  148. [FDVcc]
  149. [FLTcc]
  150. [FIXcc]
  151. [FMLcc]
  152. [FRDcc]
  153. [LDC]
  154. reg32,reg32 \321\300\1\x11\101 ARM7
  155. [LDMcc]
  156. memam4,reglist \x26\x81 ARM7
  157. [LDRBTcc]
  158. [LDRBcc]
  159. reg32,memam2 \x17\x07\x10 ARM7
  160. [LDRcc]
  161. reg32,memam2 \x17\x05\x10 ARM7
  162. ; reg32,imm32 \x17\x05\x10 ARM7
  163. ; reg32,reg32 \x18\x04\x10 ARM7
  164. ; reg32,reg32,imm32 \x19\x04\x10 ARM7
  165. ; reg32,reg32,reg32 \x20\x06\x10 ARM7
  166. ; reg32,reg32,reg32,imm32 \x21\x06\x10 ARM7
  167. [LDRHcc]
  168. reg32,imm32 \x22\x50\xB0 ARM7
  169. reg32,reg32 \x23\x50\xB0 ARM7
  170. reg32,reg32,imm32 \x24\x50\xB0 ARM7
  171. reg32,reg32,reg32 \x25\x10\xB0 ARM7
  172. [LDRSBcc]
  173. reg32,imm32 \x22\x50\xD0 ARM7
  174. reg32,reg32 \x23\x50\xD0 ARM7
  175. reg32,reg32,imm32 \x24\x50\xD0 ARM7
  176. reg32,reg32,reg32 \x25\x10\xD0 ARM7
  177. [LDRSHcc]
  178. reg32,imm32 \x22\x50\xF0 ARM7
  179. reg32,reg32 \x23\x50\xF0 ARM7
  180. reg32,reg32,imm32 \x24\x50\xF0 ARM7
  181. reg32,reg32,reg32 \x25\x10\xF0 ARM7
  182. [LDRTcc]
  183. [LDFcc]
  184. [LFMcc]
  185. reg32,imm8,fpureg \xF0\x02\x01 FPA
  186. [LGNcc]
  187. [LOGcc]
  188. [MCR]
  189. reg32,mem32 \320\301\1\x13\110 ARM7
  190. [MLAcc]
  191. reg32,reg32,reg32,reg32 \x15\x00\x20\x90 ARM7
  192. [MOVcc]
  193. ; reg32,shifterop \x8\x0\0xd ARM7
  194. ; reg32,immshifter \x8\x0\0xd ARM7
  195. ; reg32,reg32,reg32 \x9\x1\xA0 ARM7
  196. ; reg32,reg32,imm \xA\x1\xA0 ARM7
  197. ; reg32,imm \xB\x3\xA0 ARM7
  198. ; [MRC]
  199. ; reg32,reg32 \321\301\1\x13\110 ARM7
  200. ; [MRScc]
  201. ; reg32,reg32 \x10\x01\x0F ARM7
  202. ; [MSRcc]
  203. ; reg32,reg32 \x11\x01\x29\xF0 ARM7
  204. ; regf,reg32 \x12\x01\x28\xF0 ARM7
  205. ; regf,imm \x13\x03\x28\xF0 ARM7
  206. [MNFcc]
  207. [MUFcc]
  208. [MULcc]
  209. reg32,reg32,reg32 \x14\x00\x00\x90 ARM7
  210. [MVFcc]
  211. fpureg,fpureg \xF2 FPA
  212. fpureg,immfpu \xF2 FPA
  213. [MVNcc]
  214. ; reg32,reg32 \x8\x0\0xf ARM7
  215. ; reg32,reg32,reg32 \x9\x1\xE0 ARM7
  216. ; reg32,reg32,imm \xA\x1\xE0 ARM7
  217. ; reg32,imm \xB\x3\xE0 ARM7
  218. [ORRcc]
  219. reg32,reg32,reg32 \4\x1\x80 ARM7
  220. reg32,reg32,reg32,reg32 \5\x1\x80 ARM7
  221. reg32,reg32,reg32,imm \6\x1\x80 ARM7
  222. reg32,reg32,imm \7\x3\x80 ARM7
  223. [RDFcc]
  224. [RFScc]
  225. [RFCcc]
  226. [RMFcc]
  227. [RPWcc]
  228. [RSBcc]
  229. reg32,reg32,reg32 \4\x0\x60 ARM7
  230. reg32,reg32,reg32,reg32 \5\x0\x60 ARM7
  231. reg32,reg32,reg32,imm \6\x0\x60 ARM7
  232. reg32,reg32,imm \7\x2\x60 ARM7
  233. [RSCcc]
  234. reg32,reg32,reg32 \4\x0\xE0 ARM7
  235. reg32,reg32,reg32,reg32 \5\x0\xE0 ARM7
  236. reg32,reg32,reg32,imm \6\x0\xE0 ARM7
  237. reg32,reg32,imm \7\x2\xE0 ARM7
  238. [RSFcc]
  239. [RNDcc]
  240. [POLcc]
  241. [SBCcc]
  242. reg32,reg32,reg32 \4\x0\xC0 ARM7
  243. reg32,reg32,reg32,reg32 \5\x0\xC0 ARM7
  244. reg32,reg32,reg32,imm \6\x0\xC0 ARM7
  245. reg32,reg32,imm \7\x2\xC0 ARM7
  246. [SFMcc]
  247. reg32,imm8,fpureg \xF0\x02\x00 FPA
  248. [SINcc]
  249. [SMLALcc]
  250. reg32,reg32,reg32,reg32 \x16\x00\xE0\x90 ARM7
  251. [SMULLcc]
  252. reg32,reg32,reg32,reg32 \x16\x00\xC0\x90 ARM7
  253. [SQTcc]
  254. [SUFcc]
  255. [STFcc]
  256. [STMcc]
  257. memam4,reglist \x26\x80 ARM7
  258. [STRcc]
  259. reg32,memam2 \x17\x04\x00 ARM7
  260. ; reg32,imm32 \x17\x05\x00 ARM7
  261. ; reg32,reg32 \x18\x04\x00 ARM7
  262. ; reg32,reg32,imm32 \x19\x04\x00 ARM7
  263. ; reg32,reg32,reg32 \x20\x06\x00 ARM7
  264. ; reg32,reg32,reg32,imm32 \x21\x06\x00 ARM7
  265. [STRBcc]
  266. reg32,memam2 \x17\x06\x00 ARM7
  267. [STRBTcc]
  268. ; A dummy since it is parsed as STR{cond}H
  269. [STRHcc]
  270. reg32,imm32 \x22\x40\xB0 ARM7
  271. reg32,reg32 \x23\x40\xB0 ARM7
  272. reg32,reg32,imm32 \x24\x40\xB0 ARM7
  273. reg32,reg32,reg32 \x25\x00\xB0 ARM7
  274. [STRTcc]
  275. [SUBcc]
  276. reg32,reg32,shifterop \4\x0\x40 ARM7
  277. reg32,reg32,immshifter \4\x0\x40 ARM7
  278. reg32,reg32,reg32 \4\x0\x40 ARM7
  279. ; reg32,reg32,reg32,reg32 \5\x0\x40 ARM7
  280. ; reg32,reg32,reg32,imm \6\x0\x40 ARM7
  281. ; reg32,reg32,imm \7\x2\x40 ARM7
  282. [SWIcc]
  283. imm \2\x0F ARM7
  284. [SWPcc]
  285. reg32,reg32,reg32 \x27\x01\x90 ARM7
  286. [SWPBcc]
  287. reg32,reg32,reg32 \x27\x01\x90 ARM7
  288. [TANcc]
  289. [TEQcc]
  290. reg32,reg32 \xC\x1\x20 ARM7
  291. reg32,reg32,reg32 \xD\x1\x20 ARM7
  292. reg32,reg32,imm \xE\x1\x20 ARM7
  293. reg32,imm \xF\x3\x20 ARM7
  294. [TSTcc]
  295. reg32,reg32 \xC\x1\x00 ARM7
  296. reg32,reg32,reg32 \xD\x1\x00 ARM7
  297. reg32,reg32,imm \xE\x1\x00 ARM7
  298. reg32,imm \xF\x3\x00 ARM7
  299. [UMLALcc]
  300. reg32,reg32,reg32,reg32 \x16\x00\xA0\x90 ARM7
  301. [UMULLcc]
  302. reg32,reg32,reg32,reg32 \x16\x00\x80\x90 ARM7
  303. [WFScc]
  304. ; EDSP instructions
  305. [LDRDcc]
  306. [MCRRcc]
  307. [MRRCcc]
  308. [PLD]
  309. [QADDcc]
  310. [QDADDcc]
  311. [QDSUBcc]
  312. [QSUBcc]
  313. [SMLABBcc]
  314. [SMLABTcc]
  315. [SMLATBcc]
  316. [SMLATTcc]
  317. [SMLALBBcc]
  318. [SMLALBTcc]
  319. [SMLALTBcc]
  320. [SMLALTTcc]
  321. [SMLAWBcc]
  322. [SMLAWTcc]
  323. [SMULBBcc]
  324. [SMULBTcc]
  325. [SMULTBcc]
  326. [SMULTTcc]
  327. [SMULWBcc]
  328. [SMULWTcc]
  329. [STRDcc]