亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? translate.c

?? QEMU 0.91 source code, supports ARM processor including S3C24xx series
?? C
?? 第 1 頁 / 共 3 頁
字號:
/* *  SH4 translation * *  Copyright (c) 2005 Samuel Tardieu * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA */#include <stdarg.h>#include <stdlib.h>#include <stdio.h>#include <string.h>#include <inttypes.h>#include <assert.h>#define DEBUG_DISAS#define SH4_DEBUG_DISAS//#define SH4_SINGLE_STEP#include "cpu.h"#include "exec-all.h"#include "disas.h"enum {#define DEF(s, n, copy_size) INDEX_op_ ## s,#include "opc.h"#undef DEF    NB_OPS,};#ifdef USE_DIRECT_JUMP#define TBPARAM(x)#else#define TBPARAM(x) ((long)(x))#endifstatic uint16_t *gen_opc_ptr;static uint32_t *gen_opparam_ptr;#include "gen-op.h"typedef struct DisasContext {    struct TranslationBlock *tb;    target_ulong pc;    uint32_t sr;    uint32_t fpscr;    uint16_t opcode;    uint32_t flags;    int bstate;    int memidx;    uint32_t delayed_pc;    int singlestep_enabled;} DisasContext;enum {    BS_NONE     = 0, /* We go out of the TB without reaching a branch or an                      * exception condition                      */    BS_STOP     = 1, /* We want to stop translation for any reason */    BS_BRANCH   = 2, /* We reached a branch condition     */    BS_EXCP     = 3, /* We reached an exception condition */};#ifdef CONFIG_USER_ONLY#define GEN_OP_LD(width, reg) \  void gen_op_ld##width##_T0_##reg (DisasContext *ctx) { \    gen_op_ld##width##_T0_##reg##_raw(); \  }#define GEN_OP_ST(width, reg) \  void gen_op_st##width##_##reg##_T1 (DisasContext *ctx) { \    gen_op_st##width##_##reg##_T1_raw(); \  }#else#define GEN_OP_LD(width, reg) \  void gen_op_ld##width##_T0_##reg (DisasContext *ctx) { \    if (ctx->memidx) gen_op_ld##width##_T0_##reg##_kernel(); \    else gen_op_ld##width##_T0_##reg##_user();\  }#define GEN_OP_ST(width, reg) \  void gen_op_st##width##_##reg##_T1 (DisasContext *ctx) { \    if (ctx->memidx) gen_op_st##width##_##reg##_T1_kernel(); \    else gen_op_st##width##_##reg##_T1_user();\  }#endifGEN_OP_LD(ub, T0)GEN_OP_LD(b, T0)GEN_OP_ST(b, T0)GEN_OP_LD(uw, T0)GEN_OP_LD(w, T0)GEN_OP_ST(w, T0)GEN_OP_LD(l, T0)GEN_OP_ST(l, T0)GEN_OP_LD(fl, FT0)GEN_OP_ST(fl, FT0)GEN_OP_LD(fq, DT0)GEN_OP_ST(fq, DT0)void cpu_dump_state(CPUState * env, FILE * f,		    int (*cpu_fprintf) (FILE * f, const char *fmt, ...),		    int flags){    int i;    cpu_fprintf(f, "pc=0x%08x sr=0x%08x pr=0x%08x fpscr=0x%08x\n",		env->pc, env->sr, env->pr, env->fpscr);    for (i = 0; i < 24; i += 4) {	cpu_fprintf(f, "r%d=0x%08x r%d=0x%08x r%d=0x%08x r%d=0x%08x\n",		    i, env->gregs[i], i + 1, env->gregs[i + 1],		    i + 2, env->gregs[i + 2], i + 3, env->gregs[i + 3]);    }    if (env->flags & DELAY_SLOT) {	cpu_fprintf(f, "in delay slot (delayed_pc=0x%08x)\n",		    env->delayed_pc);    } else if (env->flags & DELAY_SLOT_CONDITIONAL) {	cpu_fprintf(f, "in conditional delay slot (delayed_pc=0x%08x)\n",		    env->delayed_pc);    }}void cpu_sh4_reset(CPUSH4State * env){#if defined(CONFIG_USER_ONLY)    env->sr = SR_FD;            /* FD - kernel does lazy fpu context switch */#else    env->sr = 0x700000F0;	/* MD, RB, BL, I3-I0 */#endif    env->vbr = 0;    env->pc = 0xA0000000;#if defined(CONFIG_USER_ONLY)    env->fpscr = FPSCR_PR; /* value for userspace according to the kernel */    set_float_rounding_mode(float_round_nearest_even, &env->fp_status); /* ?! */#else    env->fpscr = 0x00040001; /* CPU reset value according to SH4 manual */    set_float_rounding_mode(float_round_to_zero, &env->fp_status);#endif    env->mmucr = 0;}CPUSH4State *cpu_sh4_init(const char *cpu_model){    CPUSH4State *env;    env = qemu_mallocz(sizeof(CPUSH4State));    if (!env)	return NULL;    cpu_exec_init(env);    cpu_sh4_reset(env);    tlb_flush(env, 1);    return env;}static void gen_goto_tb(DisasContext * ctx, int n, target_ulong dest){    TranslationBlock *tb;    tb = ctx->tb;    if ((tb->pc & TARGET_PAGE_MASK) == (dest & TARGET_PAGE_MASK) &&	!ctx->singlestep_enabled) {	/* Use a direct jump if in same page and singlestep not enabled */	if (n == 0)	    gen_op_goto_tb0(TBPARAM(tb));	else	    gen_op_goto_tb1(TBPARAM(tb));	gen_op_movl_imm_T0((long) tb + n);    } else {	gen_op_movl_imm_T0(0);    }    gen_op_movl_imm_PC(dest);    if (ctx->singlestep_enabled)	gen_op_debug();    gen_op_exit_tb();}static void gen_jump(DisasContext * ctx){    if (ctx->delayed_pc == (uint32_t) - 1) {	/* Target is not statically known, it comes necessarily from a	   delayed jump as immediate jump are conditinal jumps */	gen_op_movl_delayed_pc_PC();	gen_op_movl_imm_T0(0);	if (ctx->singlestep_enabled)	    gen_op_debug();	gen_op_exit_tb();    } else {	gen_goto_tb(ctx, 0, ctx->delayed_pc);    }}/* Immediate conditional jump (bt or bf) */static void gen_conditional_jump(DisasContext * ctx,				 target_ulong ift, target_ulong ifnott){    int l1;    l1 = gen_new_label();    gen_op_jT(l1);    gen_goto_tb(ctx, 0, ifnott);    gen_set_label(l1);    gen_goto_tb(ctx, 1, ift);}/* Delayed conditional jump (bt or bf) */static void gen_delayed_conditional_jump(DisasContext * ctx){    int l1;    l1 = gen_new_label();    gen_op_jdelayed(l1);    gen_goto_tb(ctx, 1, ctx->pc + 2);    gen_set_label(l1);    gen_jump(ctx);}#define B3_0 (ctx->opcode & 0xf)#define B6_4 ((ctx->opcode >> 4) & 0x7)#define B7_4 ((ctx->opcode >> 4) & 0xf)#define B7_0 (ctx->opcode & 0xff)#define B7_0s ((int32_t) (int8_t) (ctx->opcode & 0xff))#define B11_0s (ctx->opcode & 0x800 ? 0xfffff000 | (ctx->opcode & 0xfff) : \  (ctx->opcode & 0xfff))#define B11_8 ((ctx->opcode >> 8) & 0xf)#define B15_12 ((ctx->opcode >> 12) & 0xf)#define REG(x) ((x) < 8 && (ctx->sr & (SR_MD | SR_RB)) == (SR_MD | SR_RB) ? \		(x) + 16 : (x))#define ALTREG(x) ((x) < 8 && (ctx->sr & (SR_MD | SR_RB)) != (SR_MD | SR_RB) \		? (x) + 16 : (x))#define FREG(x) (ctx->fpscr & FPSCR_FR ? (x) ^ 0x10 : (x))#define XHACK(x) ((((x) & 1 ) << 4) | ((x) & 0xe))#define XREG(x) (ctx->fpscr & FPSCR_FR ? XHACK(x) ^ 0x10 : XHACK(x))#define DREG(x) FREG(x) /* Assumes lsb of (x) is always 0 */#define CHECK_NOT_DELAY_SLOT \  if (ctx->flags & (DELAY_SLOT | DELAY_SLOT_CONDITIONAL)) \  {gen_op_raise_slot_illegal_instruction (); ctx->bstate = BS_EXCP; \   return;}void _decode_opc(DisasContext * ctx){#if 0    fprintf(stderr, "Translating opcode 0x%04x\n", ctx->opcode);#endif    switch (ctx->opcode) {    case 0x0019:		/* div0u */	gen_op_div0u();	return;    case 0x000b:		/* rts */	CHECK_NOT_DELAY_SLOT gen_op_rts();	ctx->flags |= DELAY_SLOT;	ctx->delayed_pc = (uint32_t) - 1;	return;    case 0x0028:		/* clrmac */	gen_op_clrmac();	return;    case 0x0048:		/* clrs */	gen_op_clrs();	return;    case 0x0008:		/* clrt */	gen_op_clrt();	return;    case 0x0038:		/* ldtlb */	assert(0);		/* XXXXX */	return;    case 0x002b:		/* rte */	CHECK_NOT_DELAY_SLOT gen_op_rte();	ctx->flags |= DELAY_SLOT;	ctx->delayed_pc = (uint32_t) - 1;	return;    case 0x0058:		/* sets */	gen_op_sets();	return;    case 0x0018:		/* sett */	gen_op_sett();	return;    case 0xfbfb:		/* frchg */	gen_op_frchg();	ctx->bstate = BS_STOP;	return;    case 0xf3fb:		/* fschg */	gen_op_fschg();	ctx->bstate = BS_STOP;	return;    case 0x0009:		/* nop */	return;    case 0x001b:		/* sleep */	assert(0);		/* XXXXX */	return;    }    switch (ctx->opcode & 0xf000) {    case 0x1000:		/* mov.l Rm,@(disp,Rn) */	gen_op_movl_rN_T0(REG(B7_4));	gen_op_movl_rN_T1(REG(B11_8));	gen_op_addl_imm_T1(B3_0 * 4);	gen_op_stl_T0_T1(ctx);	return;    case 0x5000:		/* mov.l @(disp,Rm),Rn */	gen_op_movl_rN_T0(REG(B7_4));	gen_op_addl_imm_T0(B3_0 * 4);	gen_op_ldl_T0_T0(ctx);	gen_op_movl_T0_rN(REG(B11_8));	return;    case 0xe000:		/* mov.l #imm,Rn */	gen_op_movl_imm_rN(B7_0s, REG(B11_8));	return;    case 0x9000:		/* mov.w @(disp,PC),Rn */	gen_op_movl_imm_T0(ctx->pc + 4 + B7_0 * 2);	gen_op_ldw_T0_T0(ctx);	gen_op_movl_T0_rN(REG(B11_8));	return;    case 0xd000:		/* mov.l @(disp,PC),Rn */	gen_op_movl_imm_T0((ctx->pc + 4 + B7_0 * 4) & ~3);	gen_op_ldl_T0_T0(ctx);	gen_op_movl_T0_rN(REG(B11_8));	return;    case 0x7000:		/* add.l #imm,Rn */	gen_op_add_imm_rN(B7_0s, REG(B11_8));	return;    case 0xa000:		/* bra disp */	CHECK_NOT_DELAY_SLOT	    gen_op_bra(ctx->delayed_pc = ctx->pc + 4 + B11_0s * 2);	ctx->flags |= DELAY_SLOT;	return;    case 0xb000:		/* bsr disp */	CHECK_NOT_DELAY_SLOT	    gen_op_bsr(ctx->pc + 4, ctx->delayed_pc =		       ctx->pc + 4 + B11_0s * 2);	ctx->flags |= DELAY_SLOT;	return;    }    switch (ctx->opcode & 0xf00f) {    case 0x6003:		/* mov Rm,Rn */	gen_op_movl_rN_T0(REG(B7_4));	gen_op_movl_T0_rN(REG(B11_8));	return;    case 0x2000:		/* mov.b Rm,@Rn */	gen_op_movl_rN_T0(REG(B7_4));	gen_op_movl_rN_T1(REG(B11_8));	gen_op_stb_T0_T1(ctx);	return;    case 0x2001:		/* mov.w Rm,@Rn */	gen_op_movl_rN_T0(REG(B7_4));	gen_op_movl_rN_T1(REG(B11_8));	gen_op_stw_T0_T1(ctx);	return;    case 0x2002:		/* mov.l Rm,@Rn */	gen_op_movl_rN_T0(REG(B7_4));	gen_op_movl_rN_T1(REG(B11_8));	gen_op_stl_T0_T1(ctx);	return;    case 0x6000:		/* mov.b @Rm,Rn */	gen_op_movl_rN_T0(REG(B7_4));	gen_op_ldb_T0_T0(ctx);	gen_op_movl_T0_rN(REG(B11_8));	return;    case 0x6001:		/* mov.w @Rm,Rn */	gen_op_movl_rN_T0(REG(B7_4));	gen_op_ldw_T0_T0(ctx);	gen_op_movl_T0_rN(REG(B11_8));	return;    case 0x6002:		/* mov.l @Rm,Rn */	gen_op_movl_rN_T0(REG(B7_4));	gen_op_ldl_T0_T0(ctx);	gen_op_movl_T0_rN(REG(B11_8));	return;    case 0x2004:		/* mov.b Rm,@-Rn */	gen_op_dec1_rN(REG(B11_8));	gen_op_movl_rN_T0(REG(B7_4));	gen_op_movl_rN_T1(REG(B11_8));	gen_op_stb_T0_T1(ctx);	return;    case 0x2005:		/* mov.w Rm,@-Rn */	gen_op_dec2_rN(REG(B11_8));	gen_op_movl_rN_T0(REG(B7_4));	gen_op_movl_rN_T1(REG(B11_8));	gen_op_stw_T0_T1(ctx);	return;    case 0x2006:		/* mov.l Rm,@-Rn */	gen_op_dec4_rN(REG(B11_8));	gen_op_movl_rN_T0(REG(B7_4));	gen_op_movl_rN_T1(REG(B11_8));	gen_op_stl_T0_T1(ctx);	return;    case 0x6004:		/* mov.b @Rm+,Rn */	gen_op_movl_rN_T0(REG(B7_4));	gen_op_ldb_T0_T0(ctx);	gen_op_movl_T0_rN(REG(B11_8));	gen_op_inc1_rN(REG(B7_4));	return;    case 0x6005:		/* mov.w @Rm+,Rn */	gen_op_movl_rN_T0(REG(B7_4));	gen_op_ldw_T0_T0(ctx);	gen_op_movl_T0_rN(REG(B11_8));	gen_op_inc2_rN(REG(B7_4));	return;    case 0x6006:		/* mov.l @Rm+,Rn */	gen_op_movl_rN_T0(REG(B7_4));	gen_op_ldl_T0_T0(ctx);	gen_op_movl_T0_rN(REG(B11_8));	gen_op_inc4_rN(REG(B7_4));	return;    case 0x0004:		/* mov.b Rm,@(R0,Rn) */	gen_op_movl_rN_T0(REG(B7_4));	gen_op_movl_rN_T1(REG(B11_8));	gen_op_add_rN_T1(REG(0));	gen_op_stb_T0_T1(ctx);	return;    case 0x0005:		/* mov.w Rm,@(R0,Rn) */	gen_op_movl_rN_T0(REG(B7_4));	gen_op_movl_rN_T1(REG(B11_8));	gen_op_add_rN_T1(REG(0));	gen_op_stw_T0_T1(ctx);	return;    case 0x0006:		/* mov.l Rm,@(R0,Rn) */	gen_op_movl_rN_T0(REG(B7_4));	gen_op_movl_rN_T1(REG(B11_8));	gen_op_add_rN_T1(REG(0));

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩中文字幕精品| 成人免费视频caoporn| 亚洲一区视频在线| 最好看的中文字幕久久| 成人欧美一区二区三区视频网页| 国产亚洲欧美一级| 久久精品一二三| 国产日产欧美精品一区二区三区| 久久综合色婷婷| 久久蜜桃av一区精品变态类天堂| 久久精品亚洲精品国产欧美kt∨ | 91免费精品国自产拍在线不卡| 成人高清视频在线观看| 成人白浆超碰人人人人| 一本色道久久综合亚洲91| 91精彩视频在线观看| 欧美吻胸吃奶大尺度电影| 欧美色电影在线| 欧美日本一道本| 欧美一区二区在线观看| 日韩精品最新网址| 国产日产精品一区| 亚洲精品中文字幕乱码三区| 亚洲电影你懂得| 久久精品国产成人一区二区三区 | 欧美日产国产精品| 欧美一卡2卡3卡4卡| 欧美xxxx老人做受| 欧美国产成人在线| 亚洲精品一二三| 午夜亚洲国产au精品一区二区| 亚洲成人av资源| 国产精品一级黄| 99麻豆久久久国产精品免费 | 欧美成va人片在线观看| 国产欧美精品国产国产专区 | 久久国产精品免费| 成人精品免费视频| 欧美综合欧美视频| 欧美一区二区三区白人| 久久精品亚洲精品国产欧美| 亚洲美女视频一区| 麻豆一区二区99久久久久| 高清国产一区二区| 欧美专区亚洲专区| 久久一区二区三区四区| 亚洲男人的天堂在线观看| 日日夜夜免费精品| 国产91精品一区二区麻豆网站| 972aa.com艺术欧美| 91精品麻豆日日躁夜夜躁| 国产亚洲精品精华液| 亚洲精品国产高清久久伦理二区| 日本最新不卡在线| av一区二区三区黑人| 欧美裸体一区二区三区| 久久精品视频在线免费观看| 亚洲国产综合在线| 成人免费视频caoporn| 制服视频三区第一页精品| 国产欧美日韩久久| 久久久久久电影| 亚洲成人你懂的| 国产精品自拍三区| 91福利国产成人精品照片| 久久综合色之久久综合| 水野朝阳av一区二区三区| 国产精品亚洲午夜一区二区三区 | 91精品国产综合久久福利| 国产精品护士白丝一区av| 美脚の诱脚舐め脚责91| 色婷婷av一区二区三区gif| 欧美一级日韩一级| 亚洲精品日产精品乱码不卡| 国产成人免费视频精品含羞草妖精 | 蜜臀99久久精品久久久久久软件| 91在线精品一区二区| 久久美女艺术照精彩视频福利播放| 亚洲国产另类av| 99国产一区二区三精品乱码| 久久女同精品一区二区| 三级精品在线观看| 91色综合久久久久婷婷| 国产免费久久精品| 激情六月婷婷综合| 欧美麻豆精品久久久久久| 一区二区三区四区不卡在线| 粉嫩av一区二区三区| 欧美videossexotv100| 婷婷久久综合九色综合伊人色| 日本精品一区二区三区高清 | 亚洲欧美成aⅴ人在线观看| 激情成人综合网| 欧美一区二区三区四区高清| 亚洲成av人片在线观看| 欧美亚洲国产一区在线观看网站| 国产精品国产三级国产aⅴ中文| 国产成人精品一区二区三区四区| 日韩美女主播在线视频一区二区三区| 亚洲超丰满肉感bbw| 欧美精品 日韩| 五月婷婷久久丁香| 欧美女孩性生活视频| 亚洲色图欧洲色图| 色素色在线综合| 亚洲色图一区二区三区| 97se亚洲国产综合自在线观| 中文字幕一区二区日韩精品绯色| 成人av片在线观看| 成人欧美一区二区三区小说| 91婷婷韩国欧美一区二区| 亚洲视频 欧洲视频| 国产一区免费电影| 国产亚洲精品资源在线26u| 国产精品一区一区三区| 久久久久久久久蜜桃| 国产麻豆精品95视频| 国产欧美久久久精品影院| 成人av电影在线| 一区二区三区日韩| 欧洲精品在线观看| 日韩av在线免费观看不卡| 日韩一区二区电影在线| 韩国三级中文字幕hd久久精品| 欧美成人猛片aaaaaaa| 国产成人午夜99999| 亚洲欧洲无码一区二区三区| 一本一道波多野结衣一区二区| 亚洲久本草在线中文字幕| 91成人免费网站| 麻豆精品在线视频| 国产亚洲成年网址在线观看| av在线不卡免费看| 亚洲aⅴ怡春院| www国产精品av| 91麻豆国产在线观看| 亚洲国产成人精品视频| 欧美一级在线免费| 成人免费毛片嘿嘿连载视频| 亚洲午夜私人影院| 精品免费一区二区三区| 高清成人免费视频| 亚洲国产精品视频| 26uuu亚洲综合色欧美| 国产成人精品免费一区二区| 一区二区三区日本| 久久欧美中文字幕| 在线观看视频欧美| 国产一区二三区| 亚洲激情欧美激情| 2014亚洲片线观看视频免费| 欧美在线你懂的| 国产精品一二三四区| 五月婷婷久久丁香| 欧美国产日韩亚洲一区| 91精品国产美女浴室洗澡无遮挡| 丁香亚洲综合激情啪啪综合| 日韩精品一二三区| 亚洲女与黑人做爰| 久久久www免费人成精品| 精品视频色一区| 成人免费福利片| 久久精品国产在热久久| 一区二区三区四区精品在线视频| 久久久久久久久岛国免费| 欧美日韩高清不卡| 95精品视频在线| 国产一区二区精品久久91| 亚洲va欧美va人人爽午夜| 国产精品精品国产色婷婷| 久久亚洲欧美国产精品乐播| 69p69国产精品| 日本精品视频一区二区三区| 成人激情小说乱人伦| 国产在线国偷精品免费看| 亚洲精品国产第一综合99久久| 欧美不卡视频一区| 91久久国产综合久久| 日本特黄久久久高潮| 日本va欧美va精品发布| 亚洲一区二区在线播放相泽| 中文文精品字幕一区二区| 色悠悠亚洲一区二区| 亚洲桃色在线一区| 91精品国产欧美日韩| 日韩专区在线视频| 亚洲美女视频在线| 欧美三级韩国三级日本三斤| 972aa.com艺术欧美| 美日韩一级片在线观看| 午夜电影网一区| 久久久亚洲精华液精华液精华液 | 91免费版在线看| 成人永久aaa| 一区二区三区四区中文字幕| 亚洲精品自拍动漫在线| 欧美精品一区男女天堂| 欧美一区二区大片| 色综合天天视频在线观看| 色婷婷激情久久|