亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
欧洲精品一区二区| 欧美视频第二页| 国产麻豆精品在线| 久久疯狂做爰流白浆xx| 日韩电影一区二区三区四区| 亚洲国产一区视频| 亚洲自拍偷拍综合| 亚洲永久免费av| 午夜久久久久久| 天天综合网天天综合色 | 久久精品国产精品青草| 日本vs亚洲vs韩国一区三区二区 | 一区二区在线观看视频在线观看| 亚洲欧美一区二区视频| 国产精品久久久久aaaa| 亚洲免费在线视频| 亚洲国产色一区| 久久狠狠亚洲综合| 国产精品1024久久| av一区二区三区黑人| 色94色欧美sute亚洲线路一ni | 精品国产免费一区二区三区香蕉| 精品国产第一区二区三区观看体验 | 欧美军同video69gay| 日韩欧美国产综合在线一区二区三区 | 欧美精品久久久久久久多人混战| 在线播放视频一区| 精品乱人伦小说| 久久精品视频在线免费观看| 国产精品污网站| 夜夜精品浪潮av一区二区三区| 午夜电影网一区| 国产毛片精品视频| 91在线观看免费视频| 欧美精品久久99| 欧美激情一区二区三区不卡 | 亚洲精品精品亚洲| 五月婷婷综合网| 国产一区二三区| 99视频一区二区| 51精品秘密在线观看| 久久久久国产精品麻豆ai换脸 | 精品国产乱子伦一区| 中文字幕在线观看一区| 视频一区二区三区在线| 国产麻豆成人精品| 欧美亚洲一区二区三区四区| 日韩欧美精品三级| 一区二区三区在线视频观看| 精彩视频一区二区| 在线观看日韩一区| 久久人人97超碰com| 亚洲综合成人在线视频| 国产精品白丝jk白祙喷水网站| 欧美中文字幕久久| 国产午夜一区二区三区| 亚洲v精品v日韩v欧美v专区| 国产99久久久精品| 777欧美精品| 中文字幕一区二区三区四区| 日本不卡一二三| 色拍拍在线精品视频8848| 精品国产网站在线观看| 亚洲福利视频一区| 99久久久久久99| 久久久五月婷婷| 日韩精品1区2区3区| 91在线你懂得| 国产色产综合产在线视频| 日韩制服丝袜先锋影音| 色综合久久久久久久久| 久久久国产一区二区三区四区小说| 亚洲成人激情综合网| 91亚洲男人天堂| 日本一区二区三区电影| 另类综合日韩欧美亚洲| 欧美日韩一二区| 亚洲手机成人高清视频| 成人免费视频国产在线观看| 日韩美女视频在线| 无码av免费一区二区三区试看 | 日韩丝袜情趣美女图片| 亚洲制服丝袜在线| 97久久久精品综合88久久| 国产视频一区在线观看| 韩国v欧美v亚洲v日本v| 日韩你懂的电影在线观看| 亚洲成av人片在www色猫咪| 97久久精品人人做人人爽50路| 国产精品免费视频一区| 国产精品一区二区三区四区| 精品久久久久99| 久久aⅴ国产欧美74aaa| 日韩丝袜美女视频| 美女一区二区三区在线观看| 在线综合亚洲欧美在线视频| 亚洲电影一级片| 欧美日韩国产免费一区二区| 一二三四社区欧美黄| 欧美主播一区二区三区美女| 一区二区三区蜜桃| 欧美在线小视频| 亚洲一区在线观看网站| 欧美三级电影网站| 亚洲成av人综合在线观看| 欧美日韩精品一区二区| 视频在线观看91| 在线播放中文一区| 久久国产精品一区二区| 欧美va在线播放| 国产电影精品久久禁18| 欧美国产精品劲爆| 972aa.com艺术欧美| 亚洲欧美日韩精品久久久久| 日本黄色一区二区| 性久久久久久久久久久久| 欧美美女直播网站| 久久精品久久99精品久久| 2023国产精品自拍| 高清国产午夜精品久久久久久| 亚洲国产激情av| 色香蕉久久蜜桃| 午夜不卡av免费| 欧美tk—视频vk| 国产精品一卡二卡| 国产精品美女久久久久久2018| 99久久免费国产| 日韩激情一区二区| 久久先锋影音av| 97国产精品videossex| 亚洲不卡av一区二区三区| 日韩一区二区三区精品视频| 精品在线免费观看| 亚洲欧洲精品一区二区精品久久久| 日本电影亚洲天堂一区| 免费看日韩精品| 欧美国产激情二区三区| 欧美日韩中文国产| 久久精品999| 中文字幕第一区| 欧美日韩极品在线观看一区| 国产一区视频在线看| 日韩一区日韩二区| 欧美丰满嫩嫩电影| 国产成人av电影在线| 一区二区欧美国产| 欧美精品一区二区久久婷婷| 91色porny在线视频| 日本在线不卡视频| 中文字幕中文字幕一区二区| 欧美精品aⅴ在线视频| 成人一道本在线| 日韩精品一二三区| 国产精品九色蝌蚪自拍| 制服丝袜中文字幕一区| 成人激情免费视频| 欧美a级一区二区| 亚洲欧美日韩人成在线播放| 亚洲精品在线观看视频| 在线免费一区三区| 国产不卡视频一区| 丝袜诱惑亚洲看片| 成人欧美一区二区三区1314 | 青青国产91久久久久久| 国产精品卡一卡二卡三| 日韩欧美你懂的| 欧美在线一区二区| 不卡高清视频专区| 精品无码三级在线观看视频| 亚洲一区免费观看| 亚洲国产高清在线| 精品国产一区二区亚洲人成毛片| 色老头久久综合| 国产91在线看| 久久aⅴ国产欧美74aaa| 三级久久三级久久| 一区二区在线观看视频| 欧美激情艳妇裸体舞| 精品久久人人做人人爱| 欧美美女直播网站| 在线区一区二视频| 色婷婷综合激情| av一二三不卡影片| 高清不卡一区二区在线| 久久精品国产秦先生| 午夜一区二区三区在线观看| 亚洲三级理论片| 国产精品盗摄一区二区三区| 久久亚洲欧美国产精品乐播| 日韩一区二区三区高清免费看看| 欧洲一区二区三区在线| 97se亚洲国产综合自在线不卡| 成人午夜免费电影| 国产不卡视频一区| 国产麻豆精品久久一二三| 国内久久婷婷综合| 国产一区 二区| 国产一区二区三区免费| 久久成人久久爱| 麻豆91精品91久久久的内涵|