dyncode_sh3.h
上传用户:wstnjxml
上传日期:2014-04-03
资源大小:7248k
文件大小:5k
源码类别:

Windows CE

开发平台:

C/C++

  1. /*****************************************************************************
  2.  *
  3.  * This program is free software ; you can redistribute it and/or modify
  4.  * it under the terms of the GNU General Public License as published by
  5.  * the Free Software Foundation; either version 2 of the License, or
  6.  * (at your option) any later version.
  7.  *
  8.  * This program is distributed in the hope that it will be useful,
  9.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  10.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  11.  * GNU General Public License for more details.
  12.  *
  13.  * You should have received a copy of the GNU General Public License
  14.  * along with this program; if not, write to the Free Software
  15.  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
  16.  *
  17.  * $Id: dyncode_sh3.h 271 2005-08-09 08:31:35Z picard $
  18.  *
  19.  * The Core Pocket Media Player
  20.  * Copyright (c) 2004-2005 Gabor Kovacs
  21.  *
  22.  ****************************************************************************/
  23. #ifndef __DYNCODE_SH3_H
  24. #define __DYNCODE_SH3_H
  25. #ifdef SH3
  26. #define DYNCODE
  27. //R0 result
  28. //R4-R7 a0-a3 argument
  29. //R15 sp stack pointer
  30. #define STACKFRAME 10 
  31. #define R0 0
  32. #define R1 1
  33. #define R2 2
  34. #define R3 3
  35. #define R4 4
  36. #define R5 5
  37. #define R6 6
  38. #define R7 7
  39. #define R8 8
  40. #define R9 9
  41. #define R10 10
  42. #define R11 11
  43. #define R12 12
  44. #define R13 13
  45. #define R14 14
  46. #define R15 15
  47. #define MACL 16
  48. #define MACH 17
  49. #define PR 18
  50. #define PC 19
  51. #define GBR 20
  52. #define SP 15
  53. #define MOVI 0x0100E000
  54. #define MOVW_PC 0x01019000
  55. #define MOVL_PC 0x0102D000
  56. #define MOV 0x02136003
  57. #define MOVB_ST 0x00332000 
  58. #define MOVW_ST 0x00332001
  59. #define MOVL_ST 0x00332002
  60. #define MOVB_LD 0x02136000
  61. #define MOVW_LD 0x02136001
  62. #define MOVL_LD 0x02136002
  63. #define MOVB_STSUB 0x02332004
  64. #define MOVW_STSUB 0x02332005
  65. #define MOVL_STSUB 0x02332006
  66. #define MOVB_LDADD 0x03136004
  67. #define MOVW_LDADD 0x03136005
  68. #define MOVL_LDADD 0x03136006
  69. #define MOVB_STOFS 0x00548000 /*R0*/
  70. #define MOVW_STOFS 0x00558100 /*R0*/
  71. #define MOVL_STOFS 0x00361000
  72. #define MOVB_LDOFS 0x04148400 /*R0*/
  73. #define MOVW_LDOFS 0x04158500 /*R0*/
  74. #define MOVL_LDOFS 0x02165000
  75. #define MOVB_STR0 0x00730004
  76. #define MOVW_STR0 0x00730005
  77. #define MOVL_STR0 0x00730006
  78. #define MOVB_LDR0 0x0253000C
  79. #define MOVW_LDR0 0x0253000D
  80. #define MOVL_LDR0 0x0253000E
  81. #define MOVT 0x01870029
  82. #define SWAPB 0x02136008
  83. #define SWAPW 0x02136009
  84. #define XTRCT 0x0233200D
  85. #define ADD 0x0233300C
  86. #define ADDI 0x01107000
  87. #define ADDC 0x0AB3300E
  88. #define ADDV 0x0A33300F
  89. #define CMPEQI 0x08488800 /*R0*/
  90. #define CMPEQ 0x08333000
  91. #define CMPHS 0x08333002
  92. #define CMPGE 0x08333003
  93. #define CMPHI 0x08333006
  94. #define CMPGT 0x08333007
  95. #define CMPPZ 0x08174011
  96. #define CMPPL 0x08174015
  97. #define CMPSTR 0x0833200C
  98. #define DMULSL 0x4033300D 
  99. #define DMULUL 0x40333005
  100. #define DT 0x09174010
  101. #define EXTSB 0x0213600E
  102. #define EXTSW 0x0213600F 
  103. #define EXTUB 0x0213600C
  104. #define EXTUW 0x0213600D
  105. #define MAC_L 0x5333000F
  106. #define MAC_W 0x5333400F
  107. #define MULL 0x40330007
  108. #define MULSW 0x4033200F
  109. #define MULUW 0x4033200E
  110. #define NEG 0x0213600B
  111. #define NEGC 0x0A93600A
  112. #define SUB 0x02333008
  113. #define SUBC 0x0AB3300A
  114. #define SUBV 0x0A33300B
  115. #define AND 0x02332009
  116. #define ANDI 0x0448C900 /*R0*/
  117. #define NOT 0x02136007
  118. #define OR 0x0233200B
  119. #define ORI 0x0448CB00 /*R0*/
  120. #define TST 0x08332008
  121. #define TSTI 0x0848C800 /*R0*/
  122. #define XOR 0x0233200A
  123. #define XORI 0x0448CA00 /*R0*/
  124. #define ROTL 0x09174004
  125. #define ROTR 0x09174005
  126. #define ROTCL 0x09974024
  127. #define ROTCR 0x09974025
  128. #define SHAD 0x0233400C
  129. #define SHAL 0x09174020
  130. #define SHAR 0x09174021
  131. #define SHLD 0x0233400D
  132. #define SHLL 0x09174000
  133. #define SHLR 0x09174001
  134. #define SHLL2 0x01174008
  135. #define SHLR2 0x01174009
  136. #define SHLL8 0x01174018
  137. #define SHLR8 0x01174019
  138. #define SHLL16 0x01174028
  139. #define SHLR16 0x01174029
  140. #define BF 0x008A8B00
  141. #define BFS 0x008A8F00
  142. #define BT 0x008A8900
  143. #define BTS 0x008A8D00
  144. #define BRA 0x008BA000
  145. #define BRAF 0x008C0023
  146. #define BSR 0x808BB000
  147. #define BSRF 0x808C0003
  148. #define JMP 0x000C402B
  149. #define JSR 0x800C400B
  150. #define RTS 0x200D000B
  151. #define CLRMAC 0x40090028
  152. #define CLRT 0x08090048
  153. #define PREF 0x00070083
  154. #define SETT 0x08090018
  155. #define LDS_MACH 0x4017400A
  156. #define LDS_MACL 0x4017401A
  157. #define LDS_PR 0x8017402A
  158. #define LDS_LDADD_MACH 0x41174006
  159. #define LDS_LDADD_MACL 0x41174016
  160. #define LDS_LDADD_PR 0x81174026
  161. #define STS_MACH 0x1107000A
  162. #define STS_MACL 0x1107001A
  163. #define STS_PR 0x2107002A
  164. #define STS_LDADD_MACH 0x11174002
  165. #define STS_LDADD_MACL 0x11174012
  166. #define STS_LDADD_PR 0x21174022
  167. void IShift(reg Rn, reg Tmp, int Left);
  168. void I0(int Code);
  169. void I0C(int Code, int Const);
  170. void I1(int Code, reg Rn);
  171. void I1C(int Code, reg Rn, int Const);
  172. void I2(int Code, reg Rm, reg Rn);
  173. void I2C(int Code, reg Rm, reg Rn, int Const);
  174. void I0P(int Code, dyninst* Block);
  175. void I1P(int Code, reg Reg, dyninst* Block, int Ofs);
  176. dyninst* ICode(dyninst* Block, int Ofs);
  177. void CodeBegin(int Save,int Local);
  178. void CodeEnd(int Save,int Local);
  179. void NOP();
  180. void Break();
  181. #endif
  182. #endif