An emulator, assembler, and disassembler for the Sega Game Gear
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

734 lines
16 KiB

  1. /* Copyright (C) 2014-2015 Ben Kurtovic <ben.kurtovic@gmail.com>
  2. Released under the terms of the MIT License. See LICENSE for details. */
  3. /*
  4. This file is AUTO-GENERATED from 'instructions.yml'.
  5. `make` should trigger a rebuild when it is modified; if not, use:
  6. `python scripts/update_asm_instructions.py`.
  7. @AUTOGEN_DATE Sun May 10 21:02:28 2015
  8. */
  9. /* @AUTOGEN_INST_BLOCK_START */
  10. INST_FUNC(adc)
  11. {
  12. INST_TAKES_ARGS(
  13. AT_REGISTER,
  14. AT_REGISTER|AT_IMMEDIATE|AT_INDEXED|AT_INDIRECT,
  15. AT_NONE
  16. )
  17. if (INST_TYPE(0) == AT_REGISTER && INST_TYPE(1) == AT_REGISTER) {
  18. if (INST_REG(0) == REG_A && INST_REG(1) == REG_A)
  19. INST_RETURN(1, 0x8F)
  20. if (INST_REG(0) == REG_A && INST_REG(1) == REG_B)
  21. INST_RETURN(1, 0x88)
  22. //
  23. if (INST_REG(0) == REG_A && INST_REG(1) == REG_H)
  24. INST_RETURN(1, 0x8C)
  25. if (INST_REG(0) == REG_A && INST_REG(1) == REG_IXH)
  26. INST_RETURN(2, INST_IX_PREFIX, 0x8C)
  27. //
  28. INST_ERROR(ARG_VALUE)
  29. }
  30. if (INST_TYPE(0) == AT_REGISTER && INST_TYPE(1) == AT_IMMEDIATE) {
  31. if (INST_REG(0) == REG_A && INST_IMM(1).mask & IMM_U8)
  32. INST_RETURN(2, 0xCE, INST_IMM(1).uval)
  33. INST_ERROR(ARG_VALUE)
  34. }
  35. if (INST_TYPE(0) == AT_REGISTER && INST_TYPE(1) == AT_INDEXED) {
  36. if (INST_REG(0) == REG_A)
  37. INST_RETURN(3, INST_INDEX_PREFIX(1), 0x8E, INST_INDEX(1).offset)
  38. INST_ERROR(ARG_VALUE)
  39. }
  40. if (INST_TYPE(0) == AT_REGISTER && INST_TYPE(1) == AT_INDIRECT &&
  41. INST_INDIRECT(1).type == AT_REGISTER &&
  42. INST_INDIRECT(1).addr.reg == REG_HL) {
  43. if (INST_REG(0) == REG_A)
  44. INST_RETURN(1, 0x8E)
  45. INST_ERROR(ARG_VALUE)
  46. }
  47. INST_ERROR(ARG_TYPE)
  48. }
  49. INST_FUNC(add)
  50. {
  51. INST_TAKES_NO_ARGS
  52. INST_ERROR(ARG_SYNTAX)
  53. INST_RETURN(1, 0xFF)
  54. // INST_TAKES_ARGS(2, 2)
  55. // INST_FORCE_TYPE(0, AT_REGISTER)
  56. // switch (INST_REG(0)) {
  57. // case REG_A:
  58. // switch (INST_TYPE(1)) {
  59. // INST_CASE_REGS(1, INST_CASE_ALL_8_BIT_REGS(0x80))
  60. // INST_CASE_IMM_U8(1, 2, 0xC6)
  61. // INST_CASE_INDIRECT_HL_IX_IY(1, 1, 0x86)
  62. // default: INST_ERROR(ARG1_TYPE)
  63. // }
  64. // case REG_HL:
  65. // INST_FORCE_TYPE(1, AT_REGISTER)
  66. // switch (INST_REG(1)) {
  67. // case REG_BC: INST_RETURN(1, 0x09)
  68. // case REG_DE: INST_RETURN(1, 0x19)
  69. // case REG_HL: INST_RETURN(1, 0x29)
  70. // case REG_SP: INST_RETURN(1, 0x39)
  71. // default: INST_ERROR(ARG1_BAD_REG)
  72. // }
  73. // case REG_IX:
  74. // case REG_IY:
  75. // INST_FORCE_TYPE(1, AT_REGISTER)
  76. // switch (INST_REG(1)) {
  77. // case REG_BC: INST_RETURN(2, INST_INDEX_PREFIX(1), 0x09) // TODO: wrong prefix
  78. // case REG_DE: INST_RETURN(2, INST_INDEX_PREFIX(1), 0x19)
  79. // case REG_IX:
  80. // case REG_IY:
  81. // if (INST_REG(0) != INST_REG(1))
  82. // INST_ERROR(ARG1_BAD_REG)
  83. // INST_RETURN(2, INST_INDEX_PREFIX(1), 0x29)
  84. // case REG_SP: INST_RETURN(2, INST_INDEX_PREFIX(1), 0x39)
  85. // default: INST_ERROR(ARG1_BAD_REG)
  86. // }
  87. // default:
  88. // INST_ERROR(ARG0_TYPE)
  89. // }
  90. }
  91. INST_FUNC(and)
  92. {
  93. // TODO
  94. INST_TAKES_NO_ARGS
  95. INST_ERROR(ARG_SYNTAX)
  96. INST_RETURN(1, 0xFF)
  97. }
  98. INST_FUNC(bit)
  99. {
  100. // TODO
  101. INST_TAKES_NO_ARGS
  102. INST_ERROR(ARG_SYNTAX)
  103. INST_RETURN(1, 0xFF)
  104. }
  105. INST_FUNC(call)
  106. {
  107. // TODO
  108. INST_TAKES_NO_ARGS
  109. INST_ERROR(ARG_SYNTAX)
  110. INST_RETURN(1, 0xFF)
  111. }
  112. INST_FUNC(ccf)
  113. {
  114. INST_TAKES_NO_ARGS
  115. INST_RETURN(1, 0x3F)
  116. }
  117. INST_FUNC(cp)
  118. {
  119. // TODO
  120. INST_TAKES_NO_ARGS
  121. INST_ERROR(ARG_SYNTAX)
  122. INST_RETURN(1, 0xFF)
  123. }
  124. INST_FUNC(cpd)
  125. {
  126. INST_TAKES_NO_ARGS
  127. INST_RETURN(2, 0xED, 0xA9)
  128. }
  129. INST_FUNC(cpdr)
  130. {
  131. INST_TAKES_NO_ARGS
  132. INST_RETURN(2, 0xED, 0xB9)
  133. }
  134. INST_FUNC(cpi)
  135. {
  136. INST_TAKES_NO_ARGS
  137. INST_RETURN(2, 0xED, 0xA1)
  138. }
  139. INST_FUNC(cpir)
  140. {
  141. INST_TAKES_NO_ARGS
  142. INST_RETURN(2, 0xED, 0xB1)
  143. }
  144. INST_FUNC(cpl)
  145. {
  146. INST_TAKES_NO_ARGS
  147. INST_RETURN(1, 0x2F)
  148. }
  149. INST_FUNC(daa)
  150. {
  151. INST_TAKES_NO_ARGS
  152. INST_RETURN(1, 0x27)
  153. }
  154. INST_FUNC(dec)
  155. {
  156. // TODO
  157. INST_TAKES_NO_ARGS
  158. INST_ERROR(ARG_SYNTAX)
  159. INST_RETURN(1, 0xFF)
  160. }
  161. INST_FUNC(di)
  162. {
  163. INST_TAKES_NO_ARGS
  164. INST_RETURN(1, 0xF3)
  165. }
  166. INST_FUNC(djnz)
  167. {
  168. // TODO
  169. INST_TAKES_NO_ARGS
  170. INST_ERROR(ARG_SYNTAX)
  171. INST_RETURN(1, 0xFF)
  172. }
  173. INST_FUNC(ei)
  174. {
  175. INST_TAKES_NO_ARGS
  176. INST_RETURN(1, 0xFB)
  177. }
  178. INST_FUNC(ex)
  179. {
  180. // TODO
  181. INST_TAKES_NO_ARGS
  182. INST_ERROR(ARG_SYNTAX)
  183. INST_RETURN(1, 0xFF)
  184. }
  185. INST_FUNC(exx)
  186. {
  187. INST_TAKES_NO_ARGS
  188. INST_RETURN(1, 0xD9)
  189. }
  190. INST_FUNC(halt)
  191. {
  192. INST_TAKES_NO_ARGS
  193. INST_RETURN(1, 0x76)
  194. }
  195. INST_FUNC(im)
  196. {
  197. // TODO
  198. INST_TAKES_NO_ARGS
  199. INST_ERROR(ARG_SYNTAX)
  200. INST_RETURN(1, 0xFF)
  201. }
  202. INST_FUNC(in)
  203. {
  204. // TODO
  205. INST_TAKES_NO_ARGS
  206. INST_ERROR(ARG_SYNTAX)
  207. INST_RETURN(1, 0xFF)
  208. }
  209. INST_FUNC(inc)
  210. {
  211. INST_TAKES_NO_ARGS
  212. INST_ERROR(ARG_SYNTAX)
  213. INST_RETURN(1, 0xFF)
  214. // INST_TAKES_ARGS(1, 1)
  215. // switch (INST_TYPE(0)) {
  216. // case AT_REGISTER:
  217. // switch (INST_REG(0)) {
  218. // case REG_A: INST_RETURN(1, 0x3C)
  219. // case REG_B: INST_RETURN(1, 0x04)
  220. // case REG_C: INST_RETURN(1, 0x0C)
  221. // case REG_D: INST_RETURN(1, 0x14)
  222. // case REG_E: INST_RETURN(1, 0x1C)
  223. // case REG_H: INST_RETURN(1, 0x24)
  224. // case REG_L: INST_RETURN(1, 0x2C)
  225. // case REG_BC: INST_RETURN(1, 0x03)
  226. // case REG_DE: INST_RETURN(1, 0x13)
  227. // case REG_HL: INST_RETURN(1, 0x23)
  228. // case REG_SP: INST_RETURN(1, 0x33)
  229. // case REG_IX: INST_RETURN(2, 0xDD, 0x23)
  230. // case REG_IY: INST_RETURN(2, 0xFD, 0x23)
  231. // case REG_IXH: INST_RETURN(2, 0xDD, 0x2C)
  232. // case REG_IXL: INST_RETURN(2, 0xFD, 0x2C)
  233. // case REG_IYH: INST_RETURN(2, 0xDD, 0x2C)
  234. // case REG_IYL: INST_RETURN(2, 0xFD, 0x2C)
  235. // default: INST_ERROR(ARG0_BAD_REG)
  236. // }
  237. // INST_CASE_INDIRECT_HL_IX_IY(0, 1, 0x34)
  238. // default:
  239. // INST_ERROR(ARG0_TYPE)
  240. // }
  241. }
  242. INST_FUNC(ind)
  243. {
  244. INST_TAKES_NO_ARGS
  245. INST_RETURN(2, 0xED, 0xAA)
  246. }
  247. INST_FUNC(indr)
  248. {
  249. INST_TAKES_NO_ARGS
  250. INST_RETURN(2, 0xED, 0xBA)
  251. }
  252. INST_FUNC(ini)
  253. {
  254. INST_TAKES_NO_ARGS
  255. INST_RETURN(2, 0xED, 0xA2)
  256. }
  257. INST_FUNC(inir)
  258. {
  259. INST_TAKES_NO_ARGS
  260. INST_RETURN(2, 0xED, 0xB2)
  261. }
  262. INST_FUNC(jp)
  263. {
  264. // TODO
  265. INST_TAKES_NO_ARGS
  266. INST_ERROR(ARG_SYNTAX)
  267. INST_RETURN(1, 0xFF)
  268. }
  269. INST_FUNC(jr)
  270. {
  271. // TODO
  272. INST_TAKES_NO_ARGS
  273. INST_ERROR(ARG_SYNTAX)
  274. INST_RETURN(1, 0xFF)
  275. }
  276. INST_FUNC(ld)
  277. {
  278. INST_TAKES_NO_ARGS
  279. INST_ERROR(ARG_SYNTAX)
  280. INST_RETURN(1, 0xFF)
  281. // INST_TAKES_ARGS(2, 2)
  282. // switch (INST_TYPE(0)) {
  283. // case AT_REGISTER:
  284. // switch (INST_REG(0)) {
  285. // case REG_A:
  286. // switch (INST_TYPE(1)) {
  287. // case AT_REGISTER:
  288. // switch (INST_REG(1)) {
  289. // INST_CASE_ALL_8_BIT_REGS(0x78)
  290. // case REG_I: INST_RETURN(2, 0xED, 0x57)
  291. // case REG_R: INST_RETURN(2, 0xED, 0x5F)
  292. // default: INST_ERROR(ARG1_BAD_REG)
  293. // }
  294. // INST_CASE_IMM_U8(1, 2, 0x3E)
  295. // case AT_INDIRECT:
  296. // switch (INST_INDIRECT(1).type) {
  297. // case AT_REGISTER:
  298. // switch (INST_INDIRECT(1).addr.reg) {
  299. // case REG_BC: INST_RETURN(1, 0x0A)
  300. // case REG_DE: INST_RETURN(1, 0x1A)
  301. // case REG_HL: INST_RETURN(1, 0x7E)
  302. // default: INST_ERROR(ARG0_BAD_REG)
  303. // }
  304. // case AT_IMMEDIATE:
  305. // INST_RETURN(3, 0x3A, INST_INDIRECT_IMM(1))
  306. // case AT_LABEL:
  307. // INST_RETURN_INDIRECT_LABEL(1, 3, 0x3A)
  308. // default:
  309. // INST_ERROR(ARG1_TYPE)
  310. // }
  311. // case AT_INDEXED:
  312. // INST_RETURN(3, INST_INDEX_BYTES(1, 0x7E))
  313. // default:
  314. // INST_ERROR(ARG1_TYPE)
  315. // }
  316. // case REG_B:
  317. // switch (INST_TYPE(1)) {
  318. // INST_CASE_REGS(1, INST_CASE_ALL_8_BIT_REGS(0x40))
  319. // INST_CASE_IMM_U8(1, 2, 0x06)
  320. // INST_CASE_INDIRECT_HL_IX_IY(1, 1, 0x46)
  321. // default: INST_ERROR(ARG1_TYPE)
  322. // }
  323. // case REG_C:
  324. // switch (INST_TYPE(1)) {
  325. // INST_CASE_REGS(1, INST_CASE_ALL_8_BIT_REGS(0x48))
  326. // INST_CASE_IMM_U8(1, 2, 0x0E)
  327. // INST_CASE_INDIRECT_HL_IX_IY(1, 1, 0x4E)
  328. // default: INST_ERROR(ARG1_TYPE)
  329. // }
  330. // case REG_D:
  331. // switch (INST_TYPE(1)) {
  332. // INST_CASE_REGS(1, INST_CASE_ALL_8_BIT_REGS(0x50))
  333. // INST_CASE_IMM_U8(1, 2, 0x16)
  334. // INST_CASE_INDIRECT_HL_IX_IY(1, 1, 0x56)
  335. // default: INST_ERROR(ARG1_TYPE)
  336. // }
  337. // case REG_E:
  338. // switch (INST_TYPE(1)) {
  339. // INST_CASE_REGS(1, INST_CASE_ALL_8_BIT_REGS(0x58))
  340. // INST_CASE_IMM_U8(1, 2, 0x1E)
  341. // INST_CASE_INDIRECT_HL_IX_IY(1, 1, 0x5E)
  342. // default: INST_ERROR(ARG1_TYPE)
  343. // }
  344. // case REG_H:
  345. // switch (INST_TYPE(1)) {
  346. // INST_CASE_REGS(1, INST_CASE_MAIN_8_BIT_REGS(0x60))
  347. // INST_CASE_IMM_U8(1, 2, 0x26)
  348. // INST_CASE_INDIRECT_HL_IX_IY(1, 1, 0x66)
  349. // default: INST_ERROR(ARG1_TYPE)
  350. // }
  351. // case REG_L:
  352. // switch (INST_TYPE(1)) {
  353. // INST_CASE_REGS(1, INST_CASE_MAIN_8_BIT_REGS(0x68))
  354. // INST_CASE_IMM_U8(1, 2, 0x2E)
  355. // INST_CASE_INDIRECT_HL_IX_IY(1, 1, 0x6E)
  356. // default: INST_ERROR(ARG1_TYPE)
  357. // }
  358. // case REG_I:
  359. // INST_REG_ONLY(1, REG_A)
  360. // INST_RETURN(2, 0xED, 0x47)
  361. // case REG_R:
  362. // INST_REG_ONLY(1, REG_A)
  363. // INST_RETURN(2, 0xED, 0x4F)
  364. // case REG_BC: // TODO ( 2 cases)
  365. // case REG_DE: // TODO ( 2 cases)
  366. // case REG_HL: // TODO ( 3 cases)
  367. // case REG_IX: // TODO ( 2 cases)
  368. // case REG_IY: // TODO ( 2 cases)
  369. // case REG_SP: // TODO ( 5 cases)
  370. // case REG_IXH: // TODO ( 8 cases)
  371. // case REG_IXL: // TODO ( 8 cases)
  372. // case REG_IYH: // TODO ( 8 cases)
  373. // case REG_IYL: // TODO ( 8 cases)
  374. // default: INST_ERROR(ARG0_BAD_REG)
  375. // }
  376. // case AT_INDIRECT:
  377. // switch (INST_INDIRECT(0).type) {
  378. // case AT_REGISTER:
  379. // switch (INST_INDIRECT(0).addr.reg) {
  380. // case REG_BC: // TODO (1 case )
  381. // case REG_DE: // TODO (1 case )
  382. // case REG_HL: // TODO (8 cases)
  383. // default: INST_ERROR(ARG0_BAD_REG)
  384. // }
  385. // case AT_IMMEDIATE:
  386. // // TODO (8 cases)
  387. // case AT_LABEL:
  388. // // TODO (same 8 cases)
  389. // default:
  390. // INST_ERROR(ARG0_TYPE)
  391. // }
  392. // case AT_INDEXED:
  393. // // TODO (16 cases)
  394. // default:
  395. // INST_ERROR(ARG0_TYPE)
  396. // }
  397. }
  398. INST_FUNC(ldd)
  399. {
  400. INST_TAKES_NO_ARGS
  401. INST_RETURN(2, 0xED, 0xA8)
  402. }
  403. INST_FUNC(lddr)
  404. {
  405. INST_TAKES_NO_ARGS
  406. INST_RETURN(2, 0xED, 0xB8)
  407. }
  408. INST_FUNC(ldi)
  409. {
  410. INST_TAKES_NO_ARGS
  411. INST_RETURN(2, 0xED, 0xA0)
  412. }
  413. INST_FUNC(ldir)
  414. {
  415. INST_TAKES_NO_ARGS
  416. INST_RETURN(2, 0xED, 0xB0)
  417. }
  418. INST_FUNC(neg)
  419. {
  420. INST_TAKES_NO_ARGS
  421. INST_RETURN(2, 0xED, 0x44)
  422. }
  423. INST_FUNC(nop)
  424. {
  425. INST_TAKES_NO_ARGS
  426. INST_RETURN(1, 0x00)
  427. }
  428. INST_FUNC(or)
  429. {
  430. // TODO
  431. INST_TAKES_NO_ARGS
  432. INST_ERROR(ARG_SYNTAX)
  433. INST_RETURN(1, 0xFF)
  434. }
  435. INST_FUNC(otdr)
  436. {
  437. INST_TAKES_NO_ARGS
  438. INST_RETURN(2, 0xED, 0xBB)
  439. }
  440. INST_FUNC(otir)
  441. {
  442. INST_TAKES_NO_ARGS
  443. INST_RETURN(2, 0xED, 0xB3)
  444. }
  445. INST_FUNC(out)
  446. {
  447. // TODO
  448. INST_TAKES_NO_ARGS
  449. INST_ERROR(ARG_SYNTAX)
  450. INST_RETURN(1, 0xFF)
  451. }
  452. INST_FUNC(outd)
  453. {
  454. INST_TAKES_NO_ARGS
  455. INST_RETURN(2, 0xED, 0xAB)
  456. }
  457. INST_FUNC(outi)
  458. {
  459. INST_TAKES_NO_ARGS
  460. INST_RETURN(2, 0xED, 0xA3)
  461. }
  462. INST_FUNC(pop)
  463. {
  464. // TODO
  465. INST_TAKES_NO_ARGS
  466. INST_ERROR(ARG_SYNTAX)
  467. INST_RETURN(1, 0xFF)
  468. }
  469. INST_FUNC(push)
  470. {
  471. // TODO
  472. INST_TAKES_NO_ARGS
  473. INST_ERROR(ARG_SYNTAX)
  474. INST_RETURN(1, 0xFF)
  475. }
  476. INST_FUNC(res)
  477. {
  478. // TODO
  479. INST_TAKES_NO_ARGS
  480. INST_ERROR(ARG_SYNTAX)
  481. INST_RETURN(1, 0xFF)
  482. }
  483. INST_FUNC(ret)
  484. {
  485. // TODO
  486. INST_TAKES_NO_ARGS
  487. INST_ERROR(ARG_SYNTAX)
  488. INST_RETURN(1, 0xFF)
  489. }
  490. INST_FUNC(reti)
  491. {
  492. INST_TAKES_NO_ARGS
  493. INST_RETURN(2, 0xED, 0x4D)
  494. }
  495. INST_FUNC(retn)
  496. {
  497. INST_TAKES_NO_ARGS
  498. INST_RETURN(2, 0xED, 0x45)
  499. }
  500. INST_FUNC(rl)
  501. {
  502. // TODO
  503. INST_TAKES_NO_ARGS
  504. INST_ERROR(ARG_SYNTAX)
  505. INST_RETURN(1, 0xFF)
  506. }
  507. INST_FUNC(rla)
  508. {
  509. INST_TAKES_NO_ARGS
  510. INST_RETURN(1, 0x17)
  511. }
  512. INST_FUNC(rlc)
  513. {
  514. // TODO
  515. INST_TAKES_NO_ARGS
  516. INST_ERROR(ARG_SYNTAX)
  517. INST_RETURN(1, 0xFF)
  518. }
  519. INST_FUNC(rlca)
  520. {
  521. INST_TAKES_NO_ARGS
  522. INST_RETURN(1, 0x07)
  523. }
  524. INST_FUNC(rld)
  525. {
  526. INST_TAKES_NO_ARGS
  527. INST_RETURN(2, 0xED, 0x6F)
  528. }
  529. INST_FUNC(rr)
  530. {
  531. // TODO
  532. INST_TAKES_NO_ARGS
  533. INST_ERROR(ARG_SYNTAX)
  534. INST_RETURN(1, 0xFF)
  535. }
  536. INST_FUNC(rra)
  537. {
  538. INST_TAKES_NO_ARGS
  539. INST_RETURN(1, 0x1F)
  540. }
  541. INST_FUNC(rrc)
  542. {
  543. // TODO
  544. INST_TAKES_NO_ARGS
  545. INST_ERROR(ARG_SYNTAX)
  546. INST_RETURN(1, 0xFF)
  547. }
  548. INST_FUNC(rrca)
  549. {
  550. INST_TAKES_NO_ARGS
  551. INST_RETURN(1, 0x0F)
  552. }
  553. INST_FUNC(rrd)
  554. {
  555. // TODO
  556. INST_TAKES_NO_ARGS
  557. INST_ERROR(ARG_SYNTAX)
  558. INST_RETURN(1, 0xFF)
  559. }
  560. INST_FUNC(rst)
  561. {
  562. // TODO
  563. INST_TAKES_NO_ARGS
  564. INST_ERROR(ARG_SYNTAX)
  565. INST_RETURN(1, 0xFF)
  566. }
  567. INST_FUNC(sbc)
  568. {
  569. // TODO
  570. INST_TAKES_NO_ARGS
  571. INST_ERROR(ARG_SYNTAX)
  572. INST_RETURN(1, 0xFF)
  573. }
  574. INST_FUNC(scf)
  575. {
  576. INST_TAKES_NO_ARGS
  577. INST_RETURN(1, 0x37)
  578. }
  579. INST_FUNC(set)
  580. {
  581. // TODO
  582. INST_TAKES_NO_ARGS
  583. INST_ERROR(ARG_SYNTAX)
  584. INST_RETURN(1, 0xFF)
  585. }
  586. INST_FUNC(sl1)
  587. {
  588. // TODO
  589. INST_TAKES_NO_ARGS
  590. INST_ERROR(ARG_SYNTAX)
  591. INST_RETURN(1, 0xFF)
  592. }
  593. INST_FUNC(sla)
  594. {
  595. // TODO
  596. INST_TAKES_NO_ARGS
  597. INST_ERROR(ARG_SYNTAX)
  598. INST_RETURN(1, 0xFF)
  599. }
  600. INST_FUNC(sll)
  601. {
  602. // TODO
  603. INST_TAKES_NO_ARGS
  604. INST_ERROR(ARG_SYNTAX)
  605. INST_RETURN(1, 0xFF)
  606. }
  607. INST_FUNC(sls)
  608. {
  609. // TODO
  610. INST_TAKES_NO_ARGS
  611. INST_ERROR(ARG_SYNTAX)
  612. INST_RETURN(1, 0xFF)
  613. }
  614. INST_FUNC(sra)
  615. {
  616. // TODO
  617. INST_TAKES_NO_ARGS
  618. INST_ERROR(ARG_SYNTAX)
  619. INST_RETURN(1, 0xFF)
  620. }
  621. INST_FUNC(srl)
  622. {
  623. // TODO
  624. INST_TAKES_NO_ARGS
  625. INST_ERROR(ARG_SYNTAX)
  626. INST_RETURN(1, 0xFF)
  627. }
  628. INST_FUNC(sub)
  629. {
  630. // TODO
  631. INST_TAKES_NO_ARGS
  632. INST_ERROR(ARG_SYNTAX)
  633. INST_RETURN(1, 0xFF)
  634. }
  635. INST_FUNC(xor)
  636. {
  637. // TODO
  638. INST_TAKES_NO_ARGS
  639. INST_ERROR(ARG_SYNTAX)
  640. INST_RETURN(1, 0xFF)
  641. }
  642. /* @AUTOGEN_INST_BLOCK_END */
  643. /*
  644. Return the relevant ASMInstParser function for the given encoded mnemonic.
  645. */
  646. static ASMInstParser lookup_parser(uint32_t key)
  647. {
  648. /* @AUTOGEN_LOOKUP_BLOCK_START */
  649. HANDLE(adc)
  650. HANDLE(add)
  651. HANDLE(and)
  652. /* @AUTOGEN_LOOKUP_BLOCK_END */
  653. return NULL;
  654. }