An emulator, assembler, and disassembler for the Sega Game Gear
Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.

instructions.inc.c 16 KiB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733
  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. }