armins.dat 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625
  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. [CPS]
  142. [CPSID]
  143. [CPSIE]
  144. [DVFcc]
  145. [EORcc]
  146. reg32,reg32,reg32 \4\x0\x20 ARM7
  147. reg32,reg32,reg32,reg32 \5\x0\x20 ARM7
  148. reg32,reg32,reg32,imm \6\x0\x20 ARM7
  149. reg32,reg32,imm \7\x2\x20 ARM7
  150. [EXPcc]
  151. [FDVcc]
  152. [FLTcc]
  153. [FIXcc]
  154. [FMLcc]
  155. [FRDcc]
  156. [LDC]
  157. reg32,reg32 \321\300\1\x11\101 ARM7
  158. [LDMcc]
  159. memam4,reglist \x26\x81 ARM7
  160. [LDRBTcc]
  161. [LDRBcc]
  162. reg32,memam2 \x17\x07\x10 ARM7
  163. [LDRcc]
  164. reg32,memam2 \x17\x05\x10 ARM7
  165. ; reg32,imm32 \x17\x05\x10 ARM7
  166. ; reg32,reg32 \x18\x04\x10 ARM7
  167. ; reg32,reg32,imm32 \x19\x04\x10 ARM7
  168. ; reg32,reg32,reg32 \x20\x06\x10 ARM7
  169. ; reg32,reg32,reg32,imm32 \x21\x06\x10 ARM7
  170. [LDRHcc]
  171. reg32,imm32 \x22\x50\xB0 ARM7
  172. reg32,reg32 \x23\x50\xB0 ARM7
  173. reg32,reg32,imm32 \x24\x50\xB0 ARM7
  174. reg32,reg32,reg32 \x25\x10\xB0 ARM7
  175. [LDRSBcc]
  176. reg32,imm32 \x22\x50\xD0 ARM7
  177. reg32,reg32 \x23\x50\xD0 ARM7
  178. reg32,reg32,imm32 \x24\x50\xD0 ARM7
  179. reg32,reg32,reg32 \x25\x10\xD0 ARM7
  180. [LDRSHcc]
  181. reg32,imm32 \x22\x50\xF0 ARM7
  182. reg32,reg32 \x23\x50\xF0 ARM7
  183. reg32,reg32,imm32 \x24\x50\xF0 ARM7
  184. reg32,reg32,reg32 \x25\x10\xF0 ARM7
  185. [LDRTcc]
  186. [LDFcc]
  187. [LFMcc]
  188. reg32,imm8,fpureg \xF0\x02\x01 FPA
  189. [LGNcc]
  190. [LOGcc]
  191. [MCR]
  192. reg32,mem32 \320\301\1\x13\110 ARM7
  193. [MLAcc]
  194. reg32,reg32,reg32,reg32 \x15\x00\x20\x90 ARM7
  195. [MOVcc]
  196. ; reg32,shifterop \x8\x0\0xd ARM7
  197. ; reg32,immshifter \x8\x0\0xd ARM7
  198. ; reg32,reg32,reg32 \x9\x1\xA0 ARM7
  199. ; reg32,reg32,imm \xA\x1\xA0 ARM7
  200. ; reg32,imm \xB\x3\xA0 ARM7
  201. ; [MRC]
  202. ; reg32,reg32 \321\301\1\x13\110 ARM7
  203. [MRScc]
  204. reg32,reg32 \x10\x01\x0F ARM7
  205. [MSRcc]
  206. reg32,reg32 \x11\x01\x29\xF0 ARM7
  207. regf,reg32 \x12\x01\x28\xF0 ARM7
  208. regf,imm \x13\x03\x28\xF0 ARM7
  209. [MNFcc]
  210. [MUFcc]
  211. [MULcc]
  212. reg32,reg32,reg32 \x14\x00\x00\x90 ARM7
  213. [MVFcc]
  214. fpureg,fpureg \xF2 FPA
  215. fpureg,immfpu \xF2 FPA
  216. [MVNcc]
  217. ; reg32,reg32 \x8\x0\0xf ARM7
  218. ; reg32,reg32,reg32 \x9\x1\xE0 ARM7
  219. ; reg32,reg32,imm \xA\x1\xE0 ARM7
  220. ; reg32,imm \xB\x3\xE0 ARM7
  221. [NOP]
  222. [ORRcc]
  223. reg32,reg32,reg32 \4\x1\x80 ARM7
  224. reg32,reg32,reg32,reg32 \5\x1\x80 ARM7
  225. reg32,reg32,reg32,imm \6\x1\x80 ARM7
  226. reg32,reg32,imm \7\x3\x80 ARM7
  227. [RDFcc]
  228. [RFScc]
  229. [RFCcc]
  230. [RMFcc]
  231. [RPWcc]
  232. [RSBcc]
  233. reg32,reg32,reg32 \4\x0\x60 ARM7
  234. reg32,reg32,reg32,reg32 \5\x0\x60 ARM7
  235. reg32,reg32,reg32,imm \6\x0\x60 ARM7
  236. reg32,reg32,imm \7\x2\x60 ARM7
  237. [RSCcc]
  238. reg32,reg32,reg32 \4\x0\xE0 ARM7
  239. reg32,reg32,reg32,reg32 \5\x0\xE0 ARM7
  240. reg32,reg32,reg32,imm \6\x0\xE0 ARM7
  241. reg32,reg32,imm \7\x2\xE0 ARM7
  242. [RSFcc]
  243. [RNDcc]
  244. [POLcc]
  245. [SBCcc]
  246. reg32,reg32,reg32 \4\x0\xC0 ARM7
  247. reg32,reg32,reg32,reg32 \5\x0\xC0 ARM7
  248. reg32,reg32,reg32,imm \6\x0\xC0 ARM7
  249. reg32,reg32,imm \7\x2\xC0 ARM7
  250. [SFMcc]
  251. reg32,imm8,fpureg \xF0\x02\x00 FPA
  252. [SINcc]
  253. [SMLALcc]
  254. reg32,reg32,reg32,reg32 \x16\x00\xE0\x90 ARM7
  255. [SMULLcc]
  256. reg32,reg32,reg32,reg32 \x16\x00\xC0\x90 ARM7
  257. [SQTcc]
  258. [SUFcc]
  259. [STFcc]
  260. [STMcc]
  261. memam4,reglist \x26\x80 ARM7
  262. [STRcc]
  263. reg32,memam2 \x17\x04\x00 ARM7
  264. ; reg32,imm32 \x17\x05\x00 ARM7
  265. ; reg32,reg32 \x18\x04\x00 ARM7
  266. ; reg32,reg32,imm32 \x19\x04\x00 ARM7
  267. ; reg32,reg32,reg32 \x20\x06\x00 ARM7
  268. ; reg32,reg32,reg32,imm32 \x21\x06\x00 ARM7
  269. [STRBcc]
  270. reg32,memam2 \x17\x06\x00 ARM7
  271. [STRBTcc]
  272. ; A dummy since it is parsed as STR{cond}H
  273. [STRHcc]
  274. reg32,imm32 \x22\x40\xB0 ARM7
  275. reg32,reg32 \x23\x40\xB0 ARM7
  276. reg32,reg32,imm32 \x24\x40\xB0 ARM7
  277. reg32,reg32,reg32 \x25\x00\xB0 ARM7
  278. [STRTcc]
  279. [SUBcc]
  280. reg32,reg32,shifterop \4\x0\x40 ARM7
  281. reg32,reg32,immshifter \4\x0\x40 ARM7
  282. reg32,reg32,reg32 \4\x0\x40 ARM7
  283. ; reg32,reg32,reg32,reg32 \5\x0\x40 ARM7
  284. ; reg32,reg32,reg32,imm \6\x0\x40 ARM7
  285. ; reg32,reg32,imm \7\x2\x40 ARM7
  286. [SWIcc]
  287. imm \2\x0F ARM7
  288. [SWPcc]
  289. reg32,reg32,reg32 \x27\x01\x90 ARM7
  290. [SWPBcc]
  291. reg32,reg32,reg32 \x27\x01\x90 ARM7
  292. [TANcc]
  293. [TEQcc]
  294. reg32,reg32 \xC\x1\x20 ARM7
  295. reg32,reg32,reg32 \xD\x1\x20 ARM7
  296. reg32,reg32,imm \xE\x1\x20 ARM7
  297. reg32,imm \xF\x3\x20 ARM7
  298. [TSTcc]
  299. reg32,reg32 \xC\x1\x00 ARM7
  300. reg32,reg32,reg32 \xD\x1\x00 ARM7
  301. reg32,reg32,imm \xE\x1\x00 ARM7
  302. reg32,imm \xF\x3\x00 ARM7
  303. [UMLALcc]
  304. reg32,reg32,reg32,reg32 \x16\x00\xA0\x90 ARM7
  305. [UMULLcc]
  306. reg32,reg32,reg32,reg32 \x16\x00\x80\x90 ARM7
  307. [WFScc]
  308. ; EDSP instructions
  309. [LDRDcc]
  310. [MCRRcc]
  311. [MRRCcc]
  312. [PLD]
  313. [QADDcc]
  314. [QDADDcc]
  315. [QDSUBcc]
  316. [QSUBcc]
  317. [SMLABBcc]
  318. [SMLABTcc]
  319. [SMLATBcc]
  320. [SMLATTcc]
  321. [SMLALBBcc]
  322. [SMLALBTcc]
  323. [SMLALTBcc]
  324. [SMLALTTcc]
  325. [SMLAWBcc]
  326. [SMLAWTcc]
  327. [SMULBBcc]
  328. [SMULBTcc]
  329. [SMULTBcc]
  330. [SMULTTcc]
  331. [SMULWBcc]
  332. [SMULWTcc]
  333. [STRDcc]
  334. ;
  335. ; vfp instructions
  336. ;
  337. [FABSDcc]
  338. [FABSScc]
  339. [FADDDcc]
  340. [FADDScc]
  341. [FCMPDcc]
  342. [FCMPEDcc]
  343. [FCMPEScc]
  344. [FCMPEZDcc]
  345. [FCMPEZScc]
  346. [FCMPScc]
  347. [FCMPZDcc]
  348. [FCMPZScc]
  349. [FCPYDcc]
  350. [FCPYScc]
  351. [FCVTDScc]
  352. [FCVTSDcc]
  353. [FDIVDcc]
  354. [FDIVScc]
  355. [FLDDcc]
  356. [FLDMcc]
  357. [FLDScc]
  358. [FMACDcc]
  359. [FMACScc]
  360. [FMDHRcc]
  361. [FMDLRcc]
  362. [FMRDHcc]
  363. [FMRDLcc]
  364. [FMRScc]
  365. [FMRXcc]
  366. [FMSCDcc]
  367. [FMSCScc]
  368. [FMSRcc]
  369. [FMSTATcc]
  370. [FMULDcc]
  371. [FMULScc]
  372. [FMXRcc]
  373. [FNEGDcc]
  374. [FNEGScc]
  375. [FNMACDcc]
  376. [FNMACScc]
  377. [FNMSCDcc]
  378. [FNMSCScc]
  379. [FNMULDcc]
  380. [FNMULScc]
  381. [FSITODcc]
  382. [FSITOScc]
  383. [FSQRTDcc]
  384. [FSQRTScc]
  385. [FSTDcc]
  386. [FSTMcc]
  387. [FSTScc]
  388. [FSUBDcc]
  389. [FSUBScc]
  390. [FTOSIDcc]
  391. [FTOSIScc]
  392. [FTOUIDcc]
  393. [FTOUIScc]
  394. [FUITODcc]
  395. [FUITOScc]
  396. [FMDRRcc]
  397. [FMRRDcc]
  398. ; Thumb-2
  399. [ASRcc]
  400. [LSRcc]
  401. [LSLcc]
  402. [RORcc]
  403. [SDIVcc]
  404. [UDIVcc]
  405. [MOVTcc]
  406. [LDREXcc]
  407. [STREXcc]
  408. [IT]
  409. [ITE]
  410. [ITT]
  411. [ITEE]
  412. [ITTE]
  413. [ITET]
  414. [ITTT]
  415. [ITEEE]
  416. [ITTEE]
  417. [ITETE]
  418. [ITTTE]
  419. [ITEET]
  420. [ITTET]
  421. [ITETT]
  422. [ITTTT]