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

📄 translate.c.svn-base

📁 我们自己开发的一个OSEK操作系统!不知道可不可以?
💻 SVN-BASE
📖 第 1 页 / 共 5 页
字号:
                        gen_op_fdtoq();                        gen_op_store_QT0_fpr(QFPREG(rd));                        break;#else                        goto nfpu_insn;#endif                    case 0xd1:                        gen_op_load_fpr_FT1(rs2);                        gen_op_fstoi();                        gen_op_store_FT0_fpr(rd);                        break;                    case 0xd2:                        gen_op_load_fpr_DT1(DFPREG(rs2));                        gen_op_fdtoi();                        gen_op_store_FT0_fpr(rd);                        break;                    case 0xd3: /* fqtoi */#if defined(CONFIG_USER_ONLY)                        gen_op_load_fpr_QT1(QFPREG(rs2));                        gen_op_fqtoi();                        gen_op_store_FT0_fpr(rd);                        break;#else                        goto nfpu_insn;#endif#ifdef TARGET_SPARC64                    case 0x2: /* V9 fmovd */                        gen_op_load_fpr_DT0(DFPREG(rs2));                        gen_op_store_DT0_fpr(DFPREG(rd));                        break;                    case 0x3: /* V9 fmovq */#if defined(CONFIG_USER_ONLY)                        gen_op_load_fpr_QT0(QFPREG(rs2));                        gen_op_store_QT0_fpr(QFPREG(rd));                        break;#else                        goto nfpu_insn;#endif                    case 0x6: /* V9 fnegd */                        gen_op_load_fpr_DT1(DFPREG(rs2));                        gen_op_fnegd();                        gen_op_store_DT0_fpr(DFPREG(rd));                        break;                    case 0x7: /* V9 fnegq */#if defined(CONFIG_USER_ONLY)                        gen_op_load_fpr_QT1(QFPREG(rs2));                        gen_op_fnegq();                        gen_op_store_QT0_fpr(QFPREG(rd));                        break;#else                        goto nfpu_insn;#endif                    case 0xa: /* V9 fabsd */                        gen_op_load_fpr_DT1(DFPREG(rs2));                        gen_op_fabsd();                        gen_op_store_DT0_fpr(DFPREG(rd));                        break;                    case 0xb: /* V9 fabsq */#if defined(CONFIG_USER_ONLY)                        gen_op_load_fpr_QT1(QFPREG(rs2));                        gen_op_fabsq();                        gen_op_store_QT0_fpr(QFPREG(rd));                        break;#else                        goto nfpu_insn;#endif                    case 0x81: /* V9 fstox */                        gen_op_load_fpr_FT1(rs2);                        gen_op_fstox();                        gen_op_store_DT0_fpr(DFPREG(rd));                        break;                    case 0x82: /* V9 fdtox */                        gen_op_load_fpr_DT1(DFPREG(rs2));                        gen_op_fdtox();                        gen_op_store_DT0_fpr(DFPREG(rd));                        break;                    case 0x83: /* V9 fqtox */#if defined(CONFIG_USER_ONLY)                        gen_op_load_fpr_QT1(QFPREG(rs2));                        gen_op_fqtox();                        gen_op_store_DT0_fpr(DFPREG(rd));                        break;#else                        goto nfpu_insn;#endif                    case 0x84: /* V9 fxtos */                        gen_op_load_fpr_DT1(DFPREG(rs2));                        gen_op_fxtos();                        gen_op_store_FT0_fpr(rd);                        break;                    case 0x88: /* V9 fxtod */                        gen_op_load_fpr_DT1(DFPREG(rs2));                        gen_op_fxtod();                        gen_op_store_DT0_fpr(DFPREG(rd));                        break;                    case 0x8c: /* V9 fxtoq */#if defined(CONFIG_USER_ONLY)                        gen_op_load_fpr_DT1(DFPREG(rs2));                        gen_op_fxtoq();                        gen_op_store_QT0_fpr(QFPREG(rd));                        break;#else                        goto nfpu_insn;#endif#endif                    default:                        goto illegal_insn;                }            } else if (xop == 0x35) {   /* FPU Operations */#ifdef TARGET_SPARC64                int cond;#endif                if (gen_trap_ifnofpu(dc))                    goto jmp_insn;                gen_op_clear_ieee_excp_and_FTT();                rs1 = GET_FIELD(insn, 13, 17);                rs2 = GET_FIELD(insn, 27, 31);                xop = GET_FIELD(insn, 18, 26);#ifdef TARGET_SPARC64                if ((xop & 0x11f) == 0x005) { // V9 fmovsr                    cond = GET_FIELD_SP(insn, 14, 17);                    gen_op_load_fpr_FT0(rd);                    gen_op_load_fpr_FT1(rs2);                    rs1 = GET_FIELD(insn, 13, 17);                    gen_movl_reg_T0(rs1);                    flush_T2(dc);                    gen_cond_reg(cond);                    gen_op_fmovs_cc();                    gen_op_store_FT0_fpr(rd);                    break;                } else if ((xop & 0x11f) == 0x006) { // V9 fmovdr                    cond = GET_FIELD_SP(insn, 14, 17);                    gen_op_load_fpr_DT0(DFPREG(rd));                    gen_op_load_fpr_DT1(DFPREG(rs2));                    flush_T2(dc);                    rs1 = GET_FIELD(insn, 13, 17);                    gen_movl_reg_T0(rs1);                    gen_cond_reg(cond);                    gen_op_fmovs_cc();                    gen_op_store_DT0_fpr(DFPREG(rd));                    break;                } else if ((xop & 0x11f) == 0x007) { // V9 fmovqr#if defined(CONFIG_USER_ONLY)                    cond = GET_FIELD_SP(insn, 14, 17);                    gen_op_load_fpr_QT0(QFPREG(rd));                    gen_op_load_fpr_QT1(QFPREG(rs2));                    flush_T2(dc);                    rs1 = GET_FIELD(insn, 13, 17);                    gen_movl_reg_T0(rs1);                    gen_cond_reg(cond);                    gen_op_fmovq_cc();                    gen_op_store_QT0_fpr(QFPREG(rd));                    break;#else                    goto nfpu_insn;#endif                }#endif                switch (xop) {#ifdef TARGET_SPARC64                    case 0x001: /* V9 fmovscc %fcc0 */                        cond = GET_FIELD_SP(insn, 14, 17);                        gen_op_load_fpr_FT0(rd);                        gen_op_load_fpr_FT1(rs2);                        flush_T2(dc);                        gen_fcond[0][cond]();                        gen_op_fmovs_cc();                        gen_op_store_FT0_fpr(rd);                        break;                    case 0x002: /* V9 fmovdcc %fcc0 */                        cond = GET_FIELD_SP(insn, 14, 17);                        gen_op_load_fpr_DT0(DFPREG(rd));                        gen_op_load_fpr_DT1(DFPREG(rs2));                        flush_T2(dc);                        gen_fcond[0][cond]();                        gen_op_fmovd_cc();                        gen_op_store_DT0_fpr(DFPREG(rd));                        break;                    case 0x003: /* V9 fmovqcc %fcc0 */#if defined(CONFIG_USER_ONLY)                        cond = GET_FIELD_SP(insn, 14, 17);                        gen_op_load_fpr_QT0(QFPREG(rd));                        gen_op_load_fpr_QT1(QFPREG(rs2));                        flush_T2(dc);                        gen_fcond[0][cond]();                        gen_op_fmovq_cc();                        gen_op_store_QT0_fpr(QFPREG(rd));                        break;#else                        goto nfpu_insn;#endif                    case 0x041: /* V9 fmovscc %fcc1 */                        cond = GET_FIELD_SP(insn, 14, 17);                        gen_op_load_fpr_FT0(rd);                        gen_op_load_fpr_FT1(rs2);                        flush_T2(dc);                        gen_fcond[1][cond]();                        gen_op_fmovs_cc();                        gen_op_store_FT0_fpr(rd);                        break;                    case 0x042: /* V9 fmovdcc %fcc1 */                        cond = GET_FIELD_SP(insn, 14, 17);                        gen_op_load_fpr_DT0(DFPREG(rd));                        gen_op_load_fpr_DT1(DFPREG(rs2));                        flush_T2(dc);                        gen_fcond[1][cond]();                        gen_op_fmovd_cc();                        gen_op_store_DT0_fpr(DFPREG(rd));                        break;                    case 0x043: /* V9 fmovqcc %fcc1 */#if defined(CONFIG_USER_ONLY)                        cond = GET_FIELD_SP(insn, 14, 17);                        gen_op_load_fpr_QT0(QFPREG(rd));                        gen_op_load_fpr_QT1(QFPREG(rs2));                        flush_T2(dc);                        gen_fcond[1][cond]();                        gen_op_fmovq_cc();                        gen_op_store_QT0_fpr(QFPREG(rd));                        break;#else                        goto nfpu_insn;#endif                    case 0x081: /* V9 fmovscc %fcc2 */                        cond = GET_FIELD_SP(insn, 14, 17);                        gen_op_load_fpr_FT0(rd);                        gen_op_load_fpr_FT1(rs2);                        flush_T2(dc);                        gen_fcond[2][cond]();                        gen_op_fmovs_cc();                        gen_op_store_FT0_fpr(rd);                        break;                    case 0x082: /* V9 fmovdcc %fcc2 */                        cond = GET_FIELD_SP(insn, 14, 17);                        gen_op_load_fpr_DT0(DFPREG(rd));                        gen_op_load_fpr_DT1(DFPREG(rs2));                        flush_T2(dc);                        gen_fcond[2][cond]();                        gen_op_fmovd_cc();                        gen_op_store_DT0_fpr(DFPREG(rd));                        break;                    case 0x083: /* V9 fmovqcc %fcc2 */#if defined(CONFIG_USER_ONLY)                        cond = GET_FIELD_SP(insn, 14, 17);                        gen_op_load_fpr_QT0(rd);                        gen_op_load_fpr_QT1(rs2);                        flush_T2(dc);                        gen_fcond[2][cond]();                        gen_op_fmovq_cc();                        gen_op_store_QT0_fpr(rd);                        break;#else                        goto nfpu_insn;#endif                    case 0x0c1: /* V9 fmovscc %fcc3 */                        cond = GET_FIELD_SP(insn, 14, 17);                        gen_op_load_fpr_FT0(rd);                        gen_op_load_fpr_FT1(rs2);                        flush_T2(dc);                        gen_fcond[3][cond]();                        gen_op_fmovs_cc();                        gen_op_store_FT0_fpr(rd);                        break;                    case 0x0c2: /* V9 fmovdcc %fcc3 */                        cond = GET_FIELD_SP(insn, 14, 17);                        gen_op_load_fpr_DT0(DFPREG(rd));                        gen_op_load_fpr_DT1(DFPREG(rs2));                        flush_T2(dc);                        gen_fcond[3][cond]();                        gen_op_fmovd_cc();                        gen_op_store_DT0_fpr(DFPREG(rd));                        break;                    case 0x0c3: /* V9 fmovqcc %fcc3 */#if defined(CONFIG_USER_ONLY)                        cond = GET_FIELD_SP(insn, 14, 17);                        gen_op_load_fpr_QT0(QFPREG(rd));                        gen_op_load_fpr_QT1(QFPREG(rs2));                        flush_T2(dc);                        gen_fcond[3][cond]();                        gen_op_fmovq_cc();                        gen_op_store_QT0_fpr(QFPREG(rd));                        break;#else                        goto nfpu_insn;#endif                    case 0x101: /* V9 fmovscc %icc */                        cond = GET_FIELD_SP(insn, 14, 17);                        gen_op_load_fpr_FT0(rd);                        gen_op_load_fpr_FT1(rs2);                        flush_T2(dc);                        gen_cond[0][cond]();                        gen_op_fmovs_cc();                        gen_op_store_FT0_fpr(rd);                        break;                    case 0x102: /* V9 fmovdcc %icc */                        cond = GET_FIELD_SP(insn, 14, 17);                        gen_op_load_fpr_DT0(DFPREG(rd));                        gen_op_load_fpr_DT1(DFPREG(rs2));                        flush_T2(dc);                        gen_cond[0][cond]();                        gen_op_fmovd_cc();                        gen_op_store_DT0_fpr(DFPREG(rd));                        break;                    case 0x103: /* V9 fmovqcc %icc */#if defined(CONFIG_USER_ONLY)                        cond = GET_FIELD_SP(insn, 14, 17);                        gen_op_load_fpr_QT0(rd);                        gen_op_load_fpr_QT1(rs2);                        flush_T2(dc);                        gen_cond[0][cond]();                        gen_op_fmovq_cc();                        gen_op_store_QT0_fpr(rd);                        break;#else                        goto nfpu_insn;#endif                    case 0x181: /* V9 fmovscc %xcc */                        cond = GET_FIELD_SP(insn, 14, 17);                        gen_op_load_fpr_FT0(rd);                        gen_op_load_fpr_FT1(rs2);                        flush_T2(dc);                        gen_cond[1][cond]();                        gen_op_fmovs_cc();                        gen_op_store_FT0_fpr(rd);                        break;                    case 0x182: /* V9 fmovdcc %xcc */                        cond = GET_FIELD_SP(insn, 14, 17);                        gen_op_load_fpr_DT0(DFPREG(rd));                        gen_op_load_fpr_DT1(DFPREG(rs2));                        flush_T2(dc);                        gen_cond[1][cond]();                        gen_op_fmovd_cc();                        gen_op_store_DT0_fpr(DFPREG(rd));                        break;                    case 0x183: /* V9 fmovqcc %xcc */#if defined(CONFIG_USER_ONLY)                        cond = GET_FIELD_SP(insn, 14, 17);                        gen_op_load_fpr_QT0(rd);                        gen_op_load_fpr_QT1(rs2);                        flush_T2(dc);                        gen_cond[1][cond]();                        gen_op_fmovq_cc();                        gen_op_store_QT0_fpr(rd);                        break;#else                        goto nfpu_insn;#endif#endif                    case 0x51: /* fcmps, V9 %fcc */                        gen_op_load_fpr_FT0(rs1);                        gen_op_load_fpr_FT1(rs2);#ifdef TARGET_SPARC64                        gen_fcmps[rd & 3]();#else                        gen_op_fcmps();#endif                        break;                    case 0x52: /* fcmpd, V9 %fcc */                        gen_op_load_fpr_DT0(DFPREG(rs1));                        gen_op_load_fpr_DT1(DFPREG(rs2));#ifdef TARGET_SPARC64                        gen_fcmpd[rd & 3]();#else                        gen_op_fcmpd();#endif                        break;                    case 0x53: /* fcmpq, V9 %fcc */#if defined(CONFIG_USER_ONLY)                        gen_op_load_fpr_QT0(QFPREG(rs1));                        gen_op_load_fpr_QT1(QFPREG(rs2));#ifdef TARGET_SPARC64                        gen_fcmpq[rd & 3]();#else                        gen_op_fcmpq();#endif                        break;#else /* !defined(CONFIG_USER_ONLY) */                        goto nfpu_insn;#endif                    case 0x55: /* fcmpes, V9 %fcc */                        gen_op_load_fpr_FT0(rs1);                        gen_op_load_fpr_FT1(rs2);#ifdef TARGET_SPARC64                        gen_fcmpes[rd & 3]();#else                        gen_op_fcmpes();#endif                        break;                    case 0x56: /* fcmped, V9 %fcc */                        gen_op_load_fpr_DT0(DFPREG(rs1));                        gen_op_load_fpr_DT1(DFPREG(rs2));#ifdef TARGET_SPARC64                        gen_fcmped[rd & 3]();#else                        gen_op_fcmped();#endif                        break;                    case 0x57: /* fcmpeq, V9 %fcc */#if defined(CONFIG_USER_ONLY)                        gen_op_load_fpr_QT0(QFPREG(rs1));                        gen_op_load_fpr_QT1(QFPREG(rs2));#ifdef TARGET_SPARC64                        gen_fcmpeq[rd & 3]();#else                        gen_op_fcmpeq();#endif                        break;#else/* !defined(CONFIG_USER_ONLY) */                        goto nfpu_insn;#endif                    default:                        goto illegal_insn;                }#if defined(OPTIM)            } else if (xop == 0x2) {                // clr/mov shortcut                rs1 = GET_FIELD(insn, 13, 17);                if (rs1 == 0) {                    // or %g0, x, y -> mov T1, x; mov y, T1                    if (IS_IMM) {      

⌨️ 快捷键说明

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