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

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_arm.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_ARM_H
  24. #define __DYNCODE_ARM_H
  25. #ifdef ARM
  26. #define DYNCODE
  27. #define STACKFRAME 10
  28. #define R0 0
  29. #define R1 1
  30. #define R2 2
  31. #define R3 3
  32. #define R4 4
  33. #define R5 5
  34. #define R6 6
  35. #define R7 7
  36. #define R8 8
  37. #define R9 9
  38. #define R10 10
  39. #define R11 11
  40. #define R12 12
  41. #define SP 13
  42. #define R14 14
  43. #define PC 15
  44. #define LR 14
  45. #define EQ 0
  46. #define NE 1
  47. #define CS 2
  48. #define CC 3
  49. #define MI 4
  50. #define PL 5
  51. #define VS 6
  52. #define VC 7
  53. #define HI 8
  54. #define LS 9
  55. #define GE 10
  56. #define LT 11
  57. #define GT 12
  58. #define LE 13
  59. #define AL 14
  60. #define LSL 0
  61. #define LSR 1
  62. #define ASR 2
  63. #define ROR 3
  64. #define AND 0
  65. #define EOR 1
  66. #define SUB 2
  67. #define RSB 3
  68. #define ADD 4
  69. #define ADC 5
  70. #define SBC 6
  71. #define RSC 7
  72. #define TST 8
  73. #define TEQ 9
  74. #define CMP 10
  75. #define CMN 11
  76. #define ORR 12
  77. #define MOV 13
  78. #define BIC 14
  79. #define MVN 15
  80. #define MUL 16
  81. #define MLA 17
  82. #define QADD 18
  83. #define QSUB 19
  84. #define QDADD 20
  85. #define QDSUB 21
  86. #define LDR 22
  87. #define STR 23
  88. #define LDR_POST 24
  89. #define STR_POST 25
  90. #define LDR_PRE 26
  91. #define STR_PRE 27
  92. #define LDR_POSTSUB 28
  93. #define STR_POSTSUB 29
  94. #define LDR_PRESUB 30
  95. #define STR_PRESUB 31
  96. #define B 32
  97. #define BL 33
  98. #define PLD 34
  99. #define PLD_POST 35
  100. #define PLD_PRE 36
  101. #define PLD_POSTSUB 37
  102. #define PLD_PRESUB 38
  103. #define WR0 (0+16)
  104. #define WR1 (1+16)
  105. #define WR2 (2+16)
  106. #define WR3 (3+16)
  107. #define WR4 (4+16)
  108. #define WR5 (5+16)
  109. #define WR6 (6+16)
  110. #define WR7 (7+16)
  111. #define WR8 (8+16)
  112. #define WR9 (9+16)
  113. #define WR10 (10+16)
  114. #define WR11 (11+16)
  115. #define WR12 (12+16)
  116. #define WR13 (13+16)
  117. #define WR14 (14+16)
  118. #define WR15 (15+16)
  119. #define WCID (0+32)
  120. #define WCSSF (2+32)
  121. #define WCASF (3+32)
  122. #define WCGR0 (8+32)
  123. #define WCGR1 (9+32)
  124. #define WCGR2 (10+32)
  125. #define WCGR3 (11+32)
  126. //mode
  127. //1: I2 rd:16,rn:12
  128. //2: I2C rd:16,rn:12,imm[3]:0
  129. //4: I3 rd:0,rnlo:12,rnhi:16
  130. //6: I2 rd:12,rn:16
  131. //7: I3 rd:12,rn:16,rm:0
  132. //8: I3C rd:12,rn:16,rm:0,imm[3]:20
  133. //9: I2C rd:12,rn:16,imm[8]:0|20
  134. //F: I2C,I1P rd:12,rn:16,imm[8]:0 (w or q *4)
  135. #define TBCSTB 0x1E400010
  136. #define TBCSTH 0x1E400050
  137. #define TBCSTW 0x1E400090
  138. #define TINSRB 0x2E600010
  139. #define TINSRH 0x2E600050
  140. #define TINSRW 0x2E600090
  141. #define TMCR 0x1E000110
  142. #define TMCRR 0x4C400000
  143. #define TMRC 0x6E100110
  144. #define TMRRC 0x7C500000
  145. #define WACCB 0x6E0001C0
  146. #define WACCH 0x6E4001C0
  147. #define WACCW 0x6E8001C0
  148. #define WADDB   0x7E000180
  149. #define WADDH   0x7E400180
  150. #define WADDW   0x7E800180
  151. #define WADDBUS 0x7E100180
  152. #define WADDHUS 0x7E500180
  153. #define WADDWUS 0x7E900180
  154. #define WADDBSS 0x7E300180
  155. #define WADDHSS 0x7E700180
  156. #define WADDWSS 0x7EB00180
  157. #define WALIGNI 0x8E000020
  158. #define WALIGNR0 0x7E800020
  159. #define WALIGNR1 0x7E900020
  160. #define WALIGNR2 0x7EA00020
  161. #define WALIGNR3 0x7EB00020
  162. #define WAND 0x7E200000
  163. #define WANDN 0x7E300000
  164. #define WAVG2B 0x7E800000
  165. #define WAVG2H 0x7EC00000
  166. #define WAVG2BR 0x7E900000
  167. #define WAVG2HR 0x7ED00000
  168. #define WCMPEQB 0x7E000060
  169. #define WCMPEQH 0x7E400060
  170. #define WCMPEQW 0x7E800060
  171. #define WCMPGTUB 0x7E100060
  172. #define WCMPGTUH 0x7E500060
  173. #define WCMPGTUW 0x7E900060
  174. #define WCMPGTSB 0x7E300060
  175. #define WCMPGTSH 0x7E700060
  176. #define WCMPGTSW 0x7EB00060
  177. #define WLDRB 0xFD900000
  178. #define WLDRH 0xFDD00000
  179. #define WLDRW 0xFD900100 
  180. #define WLDRD   0xFDD00100
  181. #define WSTRB 0xFD800000
  182. #define WSTRH 0xFDC00000
  183. #define WSTRW 0xFD800100 
  184. #define WSTRD 0xFDC00100
  185. #define WLDRB_PRE 0xFDB00000
  186. #define WLDRH_PRE 0xFDF00000
  187. #define WLDRW_PRE 0xFDB00100 
  188. #define WLDRD_PRE 0xFDF00100
  189. #define WSTRB_PRE 0xFDA00000
  190. #define WSTRH_PRE 0xFDE00000
  191. #define WSTRW_PRE 0xFDA00100 
  192. #define WSTRD_PRE 0xFDE00100
  193. #define WLDRB_PRESUB 0xFD300000
  194. #define WLDRH_PRESUB 0xFD700000
  195. #define WLDRW_PRESUB 0xFD300100 
  196. #define WLDRD_PRESUB 0xFD700100
  197. #define WSTRB_PRESUB 0xFD200000
  198. #define WSTRH_PRESUB 0xFD600000
  199. #define WSTRW_PRESUB 0xFD200100 
  200. #define WSTRD_PRESUB 0xFD600100
  201. #define WLDRB_POST 0xFCB00000
  202. #define WLDRH_POST 0xFCF00000
  203. #define WLDRW_POST 0xFCB00100 
  204. #define WLDRD_POST 0xFCF00100
  205. #define WSTRB_POST 0xFCA00000
  206. #define WSTRH_POST 0xFCE00000
  207. #define WSTRW_POST 0xFCA00100 
  208. #define WSTRD_POST 0xFCE00100
  209. #define WLDRB_POSTSUB 0xFC300000
  210. #define WLDRH_POSTSUB 0xFC700000
  211. #define WLDRW_POSTSUB 0xFC300100 
  212. #define WLDRD_POSTSUB 0xFC700100
  213. #define WSTRB_POSTSUB 0xFC200000
  214. #define WSTRH_POSTSUB 0xFC600000
  215. #define WSTRW_POSTSUB 0xFC200100 
  216. #define WSTRD_POSTSUB 0xFC600100
  217. #define WMACU 0x7E400100
  218. #define WMACS 0x7E600100
  219. #define WMACUZ 0x7E500100
  220. #define WMACSZ 0x7E700100
  221. #define WMADDU 0x7E800100
  222. #define WMADDS 0x7EA00100
  223. #define WMAXUB 0x7E000160
  224. #define WMAXUH 0x7E400160
  225. #define WMAXUW 0x7E800160
  226. #define WMAXSB 0x7E200160
  227. #define WMAXSH 0x7E600160
  228. #define WMAXSW 0x7EA00160
  229. #define WMINUB 0x7E100160
  230. #define WMINUH 0x7E500160
  231. #define WMINUW 0x7E900160
  232. #define WMINSB 0x7E300160
  233. #define WMINSH 0x7E700160
  234. #define WMINSW 0x7EB00160
  235. #define WMULUL 0x7E000100
  236. #define WMULUM 0x7E100100
  237. #define WMULSL 0x7E200100
  238. #define WMULSM 0x7E300100
  239. #define WOR 0x7E000000
  240. #define WPACKHUS 0x7E500080
  241. #define WPACKWUS 0x7E900080
  242. #define WPACKDUS 0x7ED00080
  243. #define WPACKHSS 0x7E700080
  244. #define WPACKWSS 0x7EB00080
  245. #define WPACKDSS 0x7EF00080
  246. #define WRORH 0x7E700040
  247. #define WRORW 0x7EB00040
  248. #define WRORD 0x7EF00040
  249. #define WRORHG 0x7E700140
  250. #define WRORWG 0x7EB00140
  251. #define WRORDG 0x7EF00140
  252. #define WSADB 0x7E000120
  253. #define WSADBZ 0x7E100120
  254. #define WSADH 0x7E400120
  255. #define WSADHZ 0x7E500120
  256. #define WSHUFH 0x9E0001E0
  257. #define WSLLH 0x7E500040
  258. #define WSLLW 0x7E900040
  259. #define WSLLD 0x7ED00040
  260. #define WSLLHG 0x7E500140
  261. #define WSLLWG 0x7E900140
  262. #define WSLLDG 0x7ED00140
  263. #define WSRAH 0x7E400040
  264. #define WSRAW 0x7E800040
  265. #define WSRAD 0x7EC00040
  266. #define WSRAHG 0x7E400140
  267. #define WSRAWG 0x7E800140
  268. #define WSRADG 0x7EC00140
  269. #define WSRLH 0x7E600040
  270. #define WSRLW 0x7EA00040
  271. #define WSRLD 0x7EE00040
  272. #define WSRLHG 0x7E600140
  273. #define WSRLWG 0x7EA00140
  274. #define WSRLDG 0x7EE00140
  275. #define WSUBB   0x7E0001A0
  276. #define WSUBH   0x7E4001A0
  277. #define WSUBW   0x7E8001A0
  278. #define WSUBBUS 0x7E1001A0
  279. #define WSUBHUS 0x7E5001A0
  280. #define WSUBWUS 0x7E9001A0
  281. #define WSUBBSS 0x7E3001A0
  282. #define WSUBHSS 0x7E7001A0
  283. #define WSUBWSS 0x7EB001A0
  284. #define WUNPCKEHUB 0x6E0000C0
  285. #define WUNPCKEHUH 0x6E4000C0
  286. #define WUNPCKEHUW 0x6E8000C0
  287. #define WUNPCKEHSB 0x6E2000C0
  288. #define WUNPCKEHSH 0x6E6000C0
  289. #define WUNPCKEHSW 0x6EA000C0
  290. #define WUNPCKIHB  0x7E1000C0
  291. #define WUNPCKIHH  0x7E5000C0
  292. #define WUNPCKIHW  0x7E9000C0
  293. #define WUNPCKELUB 0x6E0000E0
  294. #define WUNPCKELUH 0x6E4000E0
  295. #define WUNPCKELUW 0x6E8000E0
  296. #define WUNPCKELSB 0x6E2000E0
  297. #define WUNPCKELSH 0x6E6000E0
  298. #define WUNPCKELSW 0x6EA000E0
  299. #define WUNPCKILB  0x7E1000E0
  300. #define WUNPCKILH  0x7E5000E0
  301. #define WUNPCKILW  0x7E9000E0
  302. #define WXOR 0x7E100000
  303. void C(int);
  304. void S();
  305. void Byte();
  306. void Half();
  307. void SByte();
  308. void SHalf();
  309. void IConst(reg Dest, int Const);
  310. void IMul(reg Dest, reg Op1, int Mul);
  311. void I3(int, reg Dest, reg Op1, reg Op2);
  312. void I3C(int, reg Dest, reg Op1, reg Op2, int Const);
  313. void I3S(int, reg Dest, reg Op1, reg Op2, int ShiftType, int Shift);
  314. void I4(int, reg Dest, reg Op1, reg Op2, reg Op3);
  315. void I2(int, reg Dest, reg Op1);
  316. void I2C(int, reg Dest, reg Op1, int Const);
  317. void I1P(int, reg Dest, dyninst* Block, int Ofs);
  318. void I0P(int, int Cond, dyninst*);
  319. void Break();
  320. void CodeBegin();
  321. void CodeEnd();
  322. #endif
  323. #endif