⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dynamicarmcode.h

📁 鼎鼎有名的手机mpeg4播放器smart movie-智能影院 解码内核
💻 H
📖 第 1 页 / 共 3 页
字号:
/*****************************************************************************
 *
 * This program is free software ; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
 *
 * $Id: dyncode_arm.h 131 2004-12-04 20:36:04Z picard $
 *
 * The Core Pocket Media Player
 * Copyright (c) 2004-2005 Gabor Kovacs
 *
 ****************************************************************************/

#ifndef _DYNAMICARMCODE_H
#define _DYNAMICARMCODE_H

#include "Rules.h"

class C_dyn_code{
public:
   enum{
      STACKFRAME = 9,         //number of dwords saved on stack inside of function
      NONE = 0xff,
   };
   enum E_CONDITION{
      EQ,   //equal
      NE,   //not equal
      CS,   //carry set
      CC,   //carry clear
      MI,   //minus
      PL,   //plus
      VS,   //overflow set
      VC,   //overflow clear
      HI,   //higher
      LS,   //lower or same
      GE,   //greater or equal
      LT,   //less than
      GT,   //greater than
      LE,   //less or equal
      AL,   //always
      NV,   //newer
   };

   enum E_REGISTER{
      r0,
      r1,
      r2,
      r3,
      r4,
      r5,
      r6,
      r7,
      r8,
      r9,
      r10,
      r11,
      r12,
      sp,
      r14,
      lr = r14,
      pc
   };
   enum E_WMMX_REGISTER{
                              //wmmx registers
      wr0 = 16,
      wr1,
      wr2,
      wr3,
      wr4,
      wr5,
      wr6,
      wr7,
      wr8,
      wr9,
      wr10,
      wr11,
      wr12,
      wr13,
      wr14,
      wr15
   };
   enum E_WMMX_SPECIAL_REGISTER{
                              //wmmx special registers
      wcid = 32,
      wcssf = 2+32,
      wcasf
   };
   enum E_WMMX_GENERAL_REGISTER{
      wcgr0 = 8+32,
      wcgr1,
      wcgr2,
      wcgr3
   };

   enum E_SHIFT_TYPE{
      LSL,
      ASL = LSL,
      LSR,
      ASR,
      ROR,
   };

   enum E_OPCODE{
      AND,
      EOR,
      SUB,
      RSB,
      ADD,
      ADC,
      SBC,
      RSC,
      TST,
      TEQ,
      CMP,
      CMN,
      ORR,
      MOV,
      BIC,
      MVN,
      MUL,
      MLA,
      QADD,
      QSUB,
      QDADD,
      QDSUB,
      LDR,
      STR,
      LDR_POST,
      STR_POST,
      LDR_PRE,
      STR_PRE,
      LDR_POSTSUB,
      STR_POSTSUB,
      LDR_PRESUB,
      STR_PRESUB,
      B,
      BL,
      PLD,
      PLD_POST,
      PLD_PRE,
      PLD_POSTSUB,
      PLD_PRESUB,
   };

   enum E_WMMX_OPCODE{
      TBCSTB = 0x1E400010,
      TBCSTH = 0x1E400050,
      TBCSTW = 0x1E400090,
      TINSRB = 0x2E600010,
      TINSRH = 0x2E600050,
      TINSRW = 0x2E600090,
      TMCR = 0x1E000110,
      TMCRR = 0x4C400000,
      TMRC = 0x6E100110,
      TMRRC = 0x7C500000,
      WACCB = 0x6E0001C0,
      WACCH = 0x6E4001C0,
      WACCW = 0x6E8001C0,
      WADDB = 0x7E000180,
      WADDH = 0x7E400180,
      WADDW = 0x7E800180,
      WADDBUS = 0x7E100180,
      WADDHUS = 0x7E500180,
      WADDWUS = 0x7E900180,
      WADDBSS = 0x7E300180,
      WADDHSS = 0x7E700180,
      WADDWSS = 0x7EB00180,
      WALIGNI = 0x8E000020,
      WALIGNR0 = 0x7E800020,
      WALIGNR1 = 0x7E900020,
      WALIGNR2 = 0x7EA00020,
      WALIGNR3 = 0x7EB00020,
      WAND = 0x7E200000,
      WANDN = 0x7E300000,
      WAVG2B = 0x7E800000,
      WAVG2H = 0x7EC00000,
      WAVG2BR = 0x7E900000,
      WAVG2HR = 0x7ED00000,
      WCMPEQB = 0x7E000060,
      WCMPEQH = 0x7E400060,
      WCMPEQW = 0x7E800060,
      WCMPGTUB = 0x7E100060,
      WCMPGTUH = 0x7E500060,
      WCMPGTUW = 0x7E900060,
      WCMPGTSB = 0x7E300060,
      WCMPGTSH = 0x7E700060,
      WCMPGTSW = 0x7EB00060,
      WLDRB = 0xFD900000,
      WLDRH = 0xFDD00000,
      WLDRW = 0xFD900100,
      WLDRD = 0xFDD00100,
      WSTRB = 0xFD800000,
      WSTRH = 0xFDC00000,
      WSTRW = 0xFD800100,
      WSTRD = 0xFDC00100,
      WLDRB_PRE = 0xFDB00000,
      WLDRH_PRE = 0xFDF00000,
      WLDRW_PRE = 0xFDB00100,
      WLDRD_PRE = 0xFDF00100,
      WSTRB_PRE = 0xFDA00000,
      WSTRH_PRE = 0xFDE00000,
      WSTRW_PRE = 0xFDA00100,
      WSTRD_PRE = 0xFDE00100,
      WLDRB_PRESUB = 0xFD300000,
      WLDRH_PRESUB = 0xFD700000,
      WLDRW_PRESUB = 0xFD300100,
      WLDRD_PRESUB = 0xFD700100,
      WSTRB_PRESUB = 0xFD200000,
      WSTRH_PRESUB = 0xFD600000,
      WSTRW_PRESUB = 0xFD200100,
      WSTRD_PRESUB = 0xFD600100,
      WLDRB_POST = 0xFCB00000,
      WLDRH_POST = 0xFCF00000,
      WLDRW_POST = 0xFCB00100,

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -