armins.dat 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623
  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. [NOP]
  219. [ORRcc]
  220. reg32,reg32,reg32 \4\x1\x80 ARM7
  221. reg32,reg32,reg32,reg32 \5\x1\x80 ARM7
  222. reg32,reg32,reg32,imm \6\x1\x80 ARM7
  223. reg32,reg32,imm \7\x3\x80 ARM7
  224. [RDFcc]
  225. [RFScc]
  226. [RFCcc]
  227. [RMFcc]
  228. [RPWcc]
  229. [RSBcc]
  230. reg32,reg32,reg32 \4\x0\x60 ARM7
  231. reg32,reg32,reg32,reg32 \5\x0\x60 ARM7
  232. reg32,reg32,reg32,imm \6\x0\x60 ARM7
  233. reg32,reg32,imm \7\x2\x60 ARM7
  234. [RSCcc]
  235. reg32,reg32,reg32 \4\x0\xE0 ARM7
  236. reg32,reg32,reg32,reg32 \5\x0\xE0 ARM7
  237. reg32,reg32,reg32,imm \6\x0\xE0 ARM7
  238. reg32,reg32,imm \7\x2\xE0 ARM7
  239. [RSFcc]
  240. [RNDcc]
  241. [POLcc]
  242. [SBCcc]
  243. reg32,reg32,reg32 \4\x0\xC0 ARM7
  244. reg32,reg32,reg32,reg32 \5\x0\xC0 ARM7
  245. reg32,reg32,reg32,imm \6\x0\xC0 ARM7
  246. reg32,reg32,imm \7\x2\xC0 ARM7
  247. [SFMcc]
  248. reg32,imm8,fpureg \xF0\x02\x00 FPA
  249. [SINcc]
  250. [SMLALcc]
  251. reg32,reg32,reg32,reg32 \x16\x00\xE0\x90 ARM7
  252. [SMULLcc]
  253. reg32,reg32,reg32,reg32 \x16\x00\xC0\x90 ARM7
  254. [SQTcc]
  255. [SUFcc]
  256. [STFcc]
  257. [STMcc]
  258. memam4,reglist \x26\x80 ARM7
  259. [STRcc]
  260. reg32,memam2 \x17\x04\x00 ARM7
  261. ; reg32,imm32 \x17\x05\x00 ARM7
  262. ; reg32,reg32 \x18\x04\x00 ARM7
  263. ; reg32,reg32,imm32 \x19\x04\x00 ARM7
  264. ; reg32,reg32,reg32 \x20\x06\x00 ARM7
  265. ; reg32,reg32,reg32,imm32 \x21\x06\x00 ARM7
  266. [STRBcc]
  267. reg32,memam2 \x17\x06\x00 ARM7
  268. [STRBTcc]
  269. ; A dummy since it is parsed as STR{cond}H
  270. [STRHcc]
  271. reg32,imm32 \x22\x40\xB0 ARM7
  272. reg32,reg32 \x23\x40\xB0 ARM7
  273. reg32,reg32,imm32 \x24\x40\xB0 ARM7
  274. reg32,reg32,reg32 \x25\x00\xB0 ARM7
  275. [STRTcc]
  276. [SUBcc]
  277. reg32,reg32,shifterop \4\x0\x40 ARM7
  278. reg32,reg32,immshifter \4\x0\x40 ARM7
  279. reg32,reg32,reg32 \4\x0\x40 ARM7
  280. ; reg32,reg32,reg32,reg32 \5\x0\x40 ARM7
  281. ; reg32,reg32,reg32,imm \6\x0\x40 ARM7
  282. ; reg32,reg32,imm \7\x2\x40 ARM7
  283. [SWIcc]
  284. imm \2\x0F ARM7
  285. [SWPcc]
  286. reg32,reg32,reg32 \x27\x01\x90 ARM7
  287. [SWPBcc]
  288. reg32,reg32,reg32 \x27\x01\x90 ARM7
  289. [TANcc]
  290. [TEQcc]
  291. reg32,reg32 \xC\x1\x20 ARM7
  292. reg32,reg32,reg32 \xD\x1\x20 ARM7
  293. reg32,reg32,imm \xE\x1\x20 ARM7
  294. reg32,imm \xF\x3\x20 ARM7
  295. [TSTcc]
  296. reg32,reg32 \xC\x1\x00 ARM7
  297. reg32,reg32,reg32 \xD\x1\x00 ARM7
  298. reg32,reg32,imm \xE\x1\x00 ARM7
  299. reg32,imm \xF\x3\x00 ARM7
  300. [UMLALcc]
  301. reg32,reg32,reg32,reg32 \x16\x00\xA0\x90 ARM7
  302. [UMULLcc]
  303. reg32,reg32,reg32,reg32 \x16\x00\x80\x90 ARM7
  304. [WFScc]
  305. ; EDSP instructions
  306. [LDRDcc]
  307. [MCRRcc]
  308. [MRRCcc]
  309. [PLD]
  310. [QADDcc]
  311. [QDADDcc]
  312. [QDSUBcc]
  313. [QSUBcc]
  314. [SMLABBcc]
  315. [SMLABTcc]
  316. [SMLATBcc]
  317. [SMLATTcc]
  318. [SMLALBBcc]
  319. [SMLALBTcc]
  320. [SMLALTBcc]
  321. [SMLALTTcc]
  322. [SMLAWBcc]
  323. [SMLAWTcc]
  324. [SMULBBcc]
  325. [SMULBTcc]
  326. [SMULTBcc]
  327. [SMULTTcc]
  328. [SMULWBcc]
  329. [SMULWTcc]
  330. [STRDcc]
  331. ;
  332. ; vfp instructions
  333. ;
  334. [FABSDcc]
  335. [FABSScc]
  336. [FADDDcc]
  337. [FADDScc]
  338. [FCMPDcc]
  339. [FCMPEDcc]
  340. [FCMPEScc]
  341. [FCMPEZDcc]
  342. [FCMPEZScc]
  343. [FCMPScc]
  344. [FCMPZDcc]
  345. [FCMPZScc]
  346. [FCPYDcc]
  347. [FCPYScc]
  348. [FCVTDScc]
  349. [FCVTSDcc]
  350. [FDIVDcc]
  351. [FDIVScc]
  352. [FLDDcc]
  353. [FLDMDcc]
  354. [FLDMScc]
  355. [FLDMXcc]
  356. [FLDScc]
  357. [FMACDcc]
  358. [FMACScc]
  359. [FMDHRcc]
  360. [FMDLRcc]
  361. [FMRDHcc]
  362. [FMRDLcc]
  363. [FMRScc]
  364. [FMRXcc]
  365. [FMSCDcc]
  366. [FMSCScc]
  367. [FMSRcc]
  368. [FMSTATcc]
  369. [FMULDcc]
  370. [FMULScc]
  371. [FMXRcc]
  372. [FNEGDcc]
  373. [FNEGScc]
  374. [FNMACDcc]
  375. [FNMACScc]
  376. [FNMSCDcc]
  377. [FNMSCScc]
  378. [FNMULDcc]
  379. [FNMULScc]
  380. [FSITODcc]
  381. [FSITOScc]
  382. [FSQRTDcc]
  383. [FSQRTScc]
  384. [FSTDcc]
  385. [FSTMDcc]
  386. [FSTMScc]
  387. [FSTMXcc]
  388. [FSTScc]
  389. [FSUBDcc]
  390. [FSUBScc]
  391. [FTOSIDcc]
  392. [FTOSIScc]
  393. [FTOUIDcc]
  394. [FTOUIScc]
  395. [FUITODcc]
  396. [FUITOScc]
  397. [ASRcc]
  398. [LSRcc]
  399. [LSLcc]
  400. [RORcc]
  401. [SDIVcc]
  402. [UDIVcc]
  403. [MOVTcc]
  404. [LDREXcc]
  405. [STREXcc]
  406. [IT]
  407. [ITE]
  408. [ITT]
  409. [ITEE]
  410. [ITTE]
  411. [ITET]
  412. [ITTT]
  413. [ITEEE]
  414. [ITTEE]
  415. [ITETE]
  416. [ITTTE]
  417. [ITEET]
  418. [ITTET]
  419. [ITETT]
  420. [ITTTT]