home *** CD-ROM | disk | FTP | other *** search
/ io Programmo 23 / IOPROG_23.ISO / SOFT / ASM / DEBUG095.ZIP / instr.set < prev    next >
Encoding:
Text File  |  1997-08-03  |  8.6 KB  |  394 lines

  1. #    This is "instr.set", the main instruction set description file.
  2.  
  3. #    The format of this file is as follows.  First of all, blank lines
  4. #    and lines whose first character is a '#' are comment lines.
  5.  
  6. #    Otherwise, each line consists of one or more fields, separated by
  7. #    spaces (but not tabs).
  8.  
  9. #    The first field is the opcode field.  It looks like the following:
  10. #        _^n+xxx
  11. #       or    _^n+xxx/xxx
  12. #       or    _^n+xxx*xxx
  13. #    Here:
  14. #        _   (if present) signifies that the line applies only to the
  15. #            assembler.
  16. #        ^n  (if present) is ^0 for AAD or AAM, ^1 for DB, ^2 for DW,
  17. #            ^3 for DD, ^4 for ORG, and ^5 for 32 bit operand prefix.
  18. #        +   (if present) causes the mnemonic to be given an equate; for
  19. #            example, "+db" leads to a line
  20. #            MNEM_DB    EQU    165
  21. #            being generated, where 165 is the offset of the mnemonic
  22. #            "db" in the area "mnlist."
  23. #        xxx is an op code mnemonic.
  24. #
  25. #    Two opcodes separated by a slash mean that the second one is the 32-bit
  26. #    variant of the first.
  27. #    Two opcodes separated by a star mean that the first occurs with a wait
  28. #    instruction; the second, without.
  29.  
  30. #    The remaining fields describe the possible variants of the instruction.
  31. #    They have the following formats:
  32. #        _Lxx/r.;n
  33. #        _Lxx/r*;n
  34. #        _Lxx/r&;n
  35. #        _DLxx/r:kk;n
  36. #    Here:
  37. #        _   (if present) means that this variant is to be used only by
  38. #            the assember.
  39. #        D   (if present) means that this variant is to be used only by
  40. #            the disassembler.
  41. #        L   (if present) means that this is a lockable instruction.
  42. #        xx  are one or two bytes of the instruction field.
  43. #        /r  (if present) specifies the "r" part in a MOD MEM/REG byte.
  44. #        .   indicates that the instruction has no operands.
  45. #        *   indicates that the byte is a prefix (LOCK or REP...).
  46. #        &   indicates that the byte is a segment prefix.
  47. #        :kk gives an index into the file "instr.key".  That file gives
  48. #            the operand list associated to the key.  The key may be one
  49. #            or two characters.
  50. #        ;n  (if present) indicates the processor on which this
  51. #            instruction first appeared.  Here n may be 1 through 6.
  52. #
  53. #    The order of the variants is important, because the assembler will take
  54. #    the first one that fits the input line.
  55.  
  56. #    References:
  57. #
  58. #    Instruction set from the Intel Pentium Family User's Manual, Vol. 3:
  59. #    Architecture and Programming Manual.  Information on earlier processors
  60. #    from various Intel and third party documentation.  Information on new
  61. #    Pentium Pro <TM> instructions from http://x86.metronet.com
  62. #    (http://198.215.126.12).
  63.  
  64. aaa 37.
  65. ^0aad d5:z
  66. ^0aam d4:z
  67. aas 3f.
  68. adc 14:1 L83/2:3 L80/2:2 L10:4 12:5
  69. add 04:1 L83/0:3 L80/0:2 L00:4 02:5
  70. and 24:1 L83/4:3 L80/4:2 L20:4 22:5
  71. arpl 63:6;2
  72. bound 62:7;1
  73. bsf 0fbc:8;3
  74. bsr 0fbd:8;3
  75. ^5+bswap 0fc8:9;4
  76. bt 0fa3:a;3 0fba/4:b;3
  77. btc L0fbb:a;3 L0fba/7:b;3
  78. btr L0fb3:a;3 L0fba/6:b;3
  79. bts L0fab:a;3 L0fba/5:b;3
  80. call e8:c ff/2:B ff/3:e 9a:d
  81. cbw/cwde 98.
  82. clc f8.
  83. cld fc.
  84. cli fa.
  85. clts 0f06.;2
  86. cmc f5.
  87. cmova 0f47:8;6
  88. cmovae 0f43:8;6
  89. cmovb 0f42:8;6
  90. cmovbe 0f46:8;6
  91. _cmovc 0f42:8;6
  92. _cmove 0f44:8;6
  93. cmovg 0f4f:8;6
  94. cmovge 0f4d:8;6
  95. cmovl 0f4c:8;6
  96. cmovle 0f4e:8;6
  97. _cmovna 0f46:8;6
  98. _cmovnae 0f42:8;6
  99. _cmovnb 0f43:8;6
  100. _cmovnbe 0f47:8;6
  101. _cmovnc 0f43:8;6
  102. _cmovne 0f45:8;6
  103. _cmovng 0f4e:8;6
  104. _cmovnge 0f4c:8;6
  105. _cmovnl 0f4d:8;6
  106. _cmovnle 0f4f:8;6
  107. cmovno 0f41:8;6
  108. _cmovnp 0f4b:8;6
  109. cmovns 0f49:8;6
  110. cmovnz 0f45:8;6
  111. cmovo 0f40:8;6
  112. _cmovp 0f4a:8;6
  113. cmovpe 0f4a:8;6
  114. cmovpo 0f4b:8;6
  115. cmovs 0f48:8;6
  116. cmovz 0f44:8;6
  117. cmp 3c:1 83/7:3 80/7:2 38:4 3a:5
  118. cmpsb a6.
  119. cmpsw/cmpsd a7.
  120. cmpxchg L0fb0:4;4
  121. cmpxchg8b 0fc7/1:f;5
  122. cpuid 0fa2.;5
  123. cwd/cdq 99.
  124. daa 27.
  125. das 2f.
  126. _^1+db
  127. _^3dd
  128. dec 48:h Lfe/1:g DLff/1:g
  129. div f6/6:g
  130. _^2dw
  131. enter c8:i;1
  132. f2xm1 d9f0.
  133. fabs d9e1.
  134. fadd d8/0:j dc/0:k d8c0:l dcc0:m
  135. faddp dec0:m. _dec1.
  136. fiadd da/0:n de/0:o
  137. fbld df/4:p
  138. fbstp df/6:p
  139. fchs d9e0.
  140. fclex*fnclex dbe2.
  141. _fcmova dbd0:l;6
  142. _fcmovae dbc0:l;6
  143. fcmovb dac0:l;6
  144. fcmovbe dad0:l;6
  145. fcmove dac8:l;6
  146. _fcmovna dad0:l;6
  147. _fcmovnae dac0:l;6
  148. fcmovnb dbc0:l;6
  149. fcmovnbe dbd0:l;6
  150. fcmovne dbc8:l;6
  151. fcmovnu dbd8:l;6
  152. _fcmovnz dbc8:l;6
  153. fcmovu dad8:l;6
  154. _fcmovz dac8:l;6
  155. fcom d8/2:j dc/2:k d8d0:q. _d8d1.
  156. fcomi dbf0:q.;6 _dbf1.;6
  157. fcomip dff0:q.;6 _dff1.;6
  158. fcomp d8/3:j dc/3:k d8d8:q. _d8d9.
  159. fcompp ded9.
  160. fcos d9ff.;3
  161. fdecstp d9f6.
  162. fdisi*fndisi dbe1.
  163. fdiv d8/6:j dc/6:k d8f0:l dcf8:m
  164. fdivp def8:m. _def9.
  165. fidiv da/6:n de/6:o
  166. fdivr d8/7:j dc/7:k d8f8:l dcf0:m
  167. fdivrp def0:m. _def1.
  168. fidivr da/7:n de/7:o
  169. feni*fneni dbe0.
  170. ffree ddc0:q
  171. ficom da/2:n de/2:o
  172. ficomp da/3:n de/3:o
  173. fild db/0:n df/0:o df/5:f
  174. fincstp d9f7.
  175. finit*fninit dbe3.
  176. fist db/2:n df/2:o
  177. fistp db/3:n df/3:o df/7:f
  178. fld d9/0:j dd/0:k db/5:r d9c0:q
  179. fld1 d9e8.
  180. fldl2t d9e9.
  181. fldl2e d9ea.
  182. fldpi d9eb.
  183. fldlg2 d9ec.
  184. fldln2 d9ed.
  185. fldz d9ee.
  186. fldcw*fnldcw d9/5:o
  187. fldenv d9/4:s
  188. fmul d8/1:j dc/1:k d8c8:l dcc8:m
  189. fmulp dec8:m. _dec9.
  190. fimul da/1:n de/1:o
  191. fnop d9d0.
  192. fpatan d9f3.
  193. fprem d9f8.
  194. fprem1 d9f5.;3
  195. fptan d9f2.
  196. frndint d9fc.
  197. frstor dd/4:s
  198. fsave*fnsave dd/6:s
  199. fscale d9fd.
  200. fsetpm*fnsetpm dbe4.;2
  201. fsin d9fe.;3
  202. fsincos d9fb.;3
  203. fsqrt d9fa.
  204. fst d9/2:j dd/2:k ddd0:q
  205. fstp d9/3:j dd/3:k db/7:r ddd8:q
  206. fstcw*fnstcw d9/7:o
  207. fstenv*fnstenv d9/6:s
  208. fstsw*fnstsw dfe0:t dd/7:o
  209. fsub d8/4:j dc/4:k d8e0:l dce8:m
  210. fsubp dee8:m. _dee9.
  211. fisub da/4:n de/4:o
  212. fsubr d8/5:j dc/5:k d8e8:l dce0:m
  213. fsubrp dee0:m. _dee1.
  214. fisubr da/5:n de/5:o
  215. ftst d9e4.
  216. fucom dde0:q.;3 _dde1.;3
  217. fucomi dbe8:q.;6 _dbe9.;6
  218. fucomip dfe8:q.;6 _dfe9.;6
  219. fucomp dde8:q.;3 _dde9.;3
  220. fucompp dae9.;3
  221. _fwait 9b.
  222. fxam d9e5.
  223. fxch d9c8:q. _d9c9.
  224. fxtract d9f4.
  225. fyl2x d9f1.
  226. fyl2xp1 d9f9.
  227. hlt f4.
  228. idiv f6/7:g
  229. imul f6/5:g 0faf:8;3 6b:u;1 _6b:u.;1 69:v;1 _69:v.;1
  230. in e4:w ec:x
  231. inc 40:h Lfe/0:g DLff/0:g
  232. insb 6c.;1
  233. insw/insd 6d.;1
  234. int cc:y cd:z
  235. into ce.
  236. invd 0f08.;4
  237. invlpg 0f01/7:s;4
  238. iret/iretd cf.
  239. ja 77:A 0f87:c;3
  240. jae 73:A 0f83:c;3
  241. jb 72:A 0f82:c;3
  242. jbe 76:A 0f86:c;3
  243. _jc 72:A 0f82:c;3
  244. jcxz/jecxz e3:A
  245. _je 74:A 0f84:c;3
  246. jg 7f:A 0f8f:c;3
  247. jge 7d:A 0f8d:c;3
  248. jl 7c:A 0f8c:c;3
  249. jle 7e:A 0f8e:c;3
  250. _jna 76:A 0f86:c;3
  251. _jnae 72:A 0f82:c;3
  252. _jnb 73:A 0f83:c;3
  253. _jnbe 77:A 0f87:c;3
  254. _jnc 73:A 0f83:c;3
  255. _jne 75:A 0f85:c;3
  256. _jng 7e:A 0f8e:c;3
  257. _jnge 7c:A 0f8c:c;3
  258. _jnl 7d:A 0f8d:c;3
  259. _jnle 7f:A 0f8f:c;3
  260. jno 71:A 0f81:c;3
  261. _jnp 7b:A 0f8b:c;3
  262. jns 79:A 0f89:c;3
  263. jnz 75:A 0f85:c;3
  264. jo 70:A 0f80:c;3
  265. _jp 7a:A 0f8a:c;3
  266. jpe 7a:A 0f8a:c;3
  267. jpo 7b:A 0f8b:c;3
  268. js 78:A 0f88:c;3
  269. jz 74:A 0f84:c;3
  270. jmp eb:A e9:c ff/4:B ff/5:e ea:d
  271. lahf 9f.
  272. lar 0f02:8;2
  273. lds c5:7
  274. lss 0fb2:7;3
  275. les c4:7
  276. lfs 0fb4:7;3
  277. lgs 0fb5:7;3
  278. lea 8d:7
  279. leave c9.;1
  280. lgdt 0f01/2:s;2
  281. lidt 0f01/3:s;2
  282. lldt 0f00/2:C;2
  283. lmsw 0f01/6:C;2
  284. +lock f0*
  285. lodsb ac.
  286. lodsw/lodsd ad.
  287. loop e2:L _e2:A
  288. _loope e1:L e1:A
  289. loopz e1:L _e1:A
  290. _loopne e0:L e0:A
  291. loopnz e0:L _e0:A
  292. lsl 0f03:8;2
  293. ltr 0f00/3:C;2
  294. mov a0:F a2:G 88:4 8a:5 8c:D 8e:E b0:H b8:HH c6/0:2 0f20:RC;3 0f22:CR;3 0f21:RD;3 0f23:DR;3 0f24:RT;3 0f26:TR;3
  295. movsb a4.
  296. movsw/movsd a5.
  297. movsx 0fbe:M;3 0fbf:N;3
  298. movzx 0fb6:M;3 0fb7:N;3
  299. mul f6/4:g
  300. neg Lf6/3:g
  301. nop 90.
  302. not Lf6/2:g
  303. or 0c:1 L83/1:3 L80/1:2 L08:4 0a:5
  304. _^4org
  305. out e6:O ee:P
  306. outsb 6e.;1
  307. outsw/outsd 6f.;1
  308. pop 8f/0:Q 58:h 1f:DS 07:ES 17:SS 0fa1:FS;3 0fa9:GS;3
  309. popa/popad 61.;1
  310. popf/popfd 9d.
  311. push 50:h ff/6:B 6a:S8;1 68:S;1 0e:CS 16:SS 1e:DS 06:ES 0fa0:FS;3 0fa8:GS;3
  312. pusha/pushad 60.;1
  313. pushf/pushfd 9c.
  314. rcl d0/2:T d2/2:U c0/2:V;1
  315. rcr d0/3:T d2/3:U c0/3:V;1
  316. rol d0/0:T d2/0:U c0/0:V;1
  317. ror d0/1:T d2/1:U c0/1:V;1
  318. rdmsr 0f32.;5
  319. +rep f3*
  320. +repe f3*
  321. +repne f2*
  322. ret c3. c2:W
  323. retf cb. ca:W
  324. rsm 0faa.;5
  325. sahf 9e.
  326. _sal d0/4:T d2/4:U c0/4:V;1
  327. sar d0/7:T d2/7:U c0/7:V;1
  328. +seg _26:ES _2e:CS _36:SS _3e:DS _64:FS _65:GS
  329. es _26&
  330. cs _2e&
  331. ss _36&
  332. ds _3e&
  333. fs _64&
  334. gs _65&
  335. shl d0/4:T d2/4:U c0/4:V;1
  336. shr d0/5:T d2/5:U c0/5:V;1
  337. sbb 1c:1 L83/3:3 L80/3:2 L18:4 1a:5
  338. scasb ae.
  339. scasw/scasd af.
  340. seta 0f97:X;3
  341. setae 0f93:X;3
  342. setb 0f92:X;3
  343. setbe 0f96:X;3
  344. _setc 0f92:X;3
  345. _sete 0f94:X;3
  346. setg 0f9f:X;3
  347. setge 0f9d:X;3
  348. setl 0f9c:X;3
  349. setle 0f9e:X;3
  350. _setna 0f96:X;3
  351. _setnae 0f92:X;3
  352. _setnb 0f93:X;3
  353. _setnbe 0f97:X;3
  354. _setnc 0f93:X;3
  355. _setne 0f95:X;3
  356. _setng 0f9e:X;3
  357. _setnge 0f9c:X;3
  358. _setnl 0f9d:X;3
  359. _setnle 0f9f:X;3
  360. setno 0f91:X;3
  361. _setnp 0f9b:X;3
  362. setns 0f99:X;3
  363. setnz 0f95:X;3
  364. seto 0f90:X;3
  365. _setp 0f9a:X;3
  366. setpe 0f9a:X;3
  367. setpo 0f9b:X;3
  368. sets 0f98:X;3
  369. setz 0f94:X;3
  370. sgdt 0f01/0:s;2
  371. sidt 0f01/1:s;2
  372. shld 0fa4:Y;3 0fa5:Z;3
  373. shrd 0fac:Y;3 0fad:Z;3
  374. sldt 0f00/0:B;2
  375. smsw 0f01/4:C;2
  376. stc f9.
  377. std fd.
  378. sti fb.
  379. stosb aa.
  380. stosw/stosd ab.
  381. str 0f00/1:C;2
  382. sub 2c:1 L83/5:3 L80/5:2 L28:4 2a:5
  383. test a8:1 f6/0:2 84:4 _84:5
  384. verr 0f00/4:C;2
  385. verw 0f00/5:C;2
  386. +wait 9b.
  387. wbinvd 0f09.;4
  388. wrmsr 0f30.;5
  389. xadd L0fc0:4;4
  390. xchg 90:( _90:) _L86:4 L86:5
  391. xlat _d7.
  392. xlatb d7.
  393. xor 34:1 L83/6:3 L80/6:2 L30:4 32:5
  394.