fpu_plus(mips32)
This commit is contained in:
@@ -127,9 +127,23 @@ static void free_list(host_memory_block_lists_t **lists)
|
||||
return;
|
||||
}
|
||||
|
||||
tlib_free((*lists)->elements);
|
||||
tlib_free((*lists)->guest_to_host_nodes);
|
||||
tlib_free((*lists)->host_to_guest_nodes);
|
||||
/*
|
||||
* tlib_free is backed by Renode's C# SimpleMemoryManager, not by plain libc
|
||||
* free. Unlike free(NULL), SimpleMemoryManager.Free(IntPtr.Zero) is an error,
|
||||
* so guard every optional allocation before releasing it.
|
||||
*/
|
||||
if((*lists)->elements != NULL)
|
||||
{
|
||||
tlib_free((*lists)->elements);
|
||||
}
|
||||
if((*lists)->guest_to_host_nodes != NULL)
|
||||
{
|
||||
tlib_free((*lists)->guest_to_host_nodes);
|
||||
}
|
||||
if((*lists)->host_to_guest_nodes != NULL)
|
||||
{
|
||||
tlib_free((*lists)->host_to_guest_nodes);
|
||||
}
|
||||
tlib_free(*lists);
|
||||
|
||||
*lists = NULL;
|
||||
@@ -143,6 +157,12 @@ void renode_set_host_blocks(host_memory_block_packed_t *blocks, int count)
|
||||
|
||||
old_mappings = lists;
|
||||
|
||||
if(count <= 0) {
|
||||
lists = NULL;
|
||||
free_list(&old_mappings);
|
||||
return;
|
||||
}
|
||||
|
||||
new_mappings = tlib_malloc(sizeof(host_memory_block_lists_t));
|
||||
new_mappings->size = count;
|
||||
new_mappings->elements = tlib_malloc(sizeof(host_memory_block_t) * count);
|
||||
|
||||
@@ -36,8 +36,8 @@ void cpu_reset(CPUState *env)
|
||||
env->LO = 0;
|
||||
|
||||
// CP0寄存器
|
||||
env->CP0_Status = CP0_STATUS_ERL | CP0_STATUS_CU1;
|
||||
env->CP0_Cause = 0;
|
||||
env->CP0_Status = CP0_STATUS_ERL | CP0_STATUS_CU1 | CP0_STATUS_BEV;
|
||||
env->CP0_Cause = (1 << 23); // Cause.IV = 1,中断使用独立向量 0xBFC00400
|
||||
env->CP0_EPC = 0;
|
||||
env->CP0_PRId = 0x00006302;
|
||||
env->CP0_Config0 = 0x80000000;
|
||||
@@ -273,6 +273,24 @@ void helper_fpu_math(CPUState *env, uint32_t insn) {
|
||||
case 0x05: res = (uint32_t)fst0 & 0x7FFFFFFF; break; // abs.s
|
||||
case 0x07: res = (uint32_t)fst0 ^ 0x80000000; break; // neg.s
|
||||
case 0x08: res = float32_to_int64(wt0, &env->fp_status); break; // round.l.s
|
||||
case 0x09: { // trunc.l.s - 单精度截断为长整数
|
||||
res = (uint64_t)float32_to_int64(wt0, &env->fp_status);
|
||||
break;
|
||||
}
|
||||
case 0x0A: { // ceil.l.s - 单精度向上取整为长整数
|
||||
int old_mode = get_float_rounding_mode(&env->fp_status);
|
||||
set_float_rounding_mode(float_round_up, &env->fp_status);
|
||||
res = (uint64_t)float32_to_int64(wt0, &env->fp_status);
|
||||
set_float_rounding_mode(old_mode, &env->fp_status);
|
||||
break;
|
||||
}
|
||||
case 0x0B: { // floor.l.s - 单精度向下取整为长整数
|
||||
int old_mode = get_float_rounding_mode(&env->fp_status);
|
||||
set_float_rounding_mode(float_round_down, &env->fp_status);
|
||||
res = (uint64_t)float32_to_int64(wt0, &env->fp_status);
|
||||
set_float_rounding_mode(old_mode, &env->fp_status);
|
||||
break;
|
||||
}
|
||||
case 0x10: { // movf.s - 如果FCC为假则传送
|
||||
uint32_t cc = (insn >> 18) & 0x7;
|
||||
int fcc = (env->fcr31 >> (23 + cc)) & 1;
|
||||
@@ -300,7 +318,7 @@ void helper_fpu_math(CPUState *env, uint32_t insn) {
|
||||
break;
|
||||
}
|
||||
case 0x20: res = int32_to_float32((int32_t)fst0, &env->fp_status); break; // cvt.s.w
|
||||
case 0x21: res = int32_to_float64((int32_t)fst0, &env->fp_status); break; //cvt.d.w(整数转双精度,结果在单精度分支是因为源操作数是整数)
|
||||
case 0x21: res = float32_to_float64(wt0, &env->fp_status); break; // cvt.d.s(单精度转双精度)
|
||||
case 0x24: res = (uint64_t)(uint32_t)float32_to_int32(wt0, &env->fp_status); break; // cvt.w.s
|
||||
case 0x25: res = (uint64_t)(uint32_t)float32_to_int32(wt0, &env->fp_status); break; // cvt.l.s(简化为32位)
|
||||
case 0x0C: { // round.w.s
|
||||
@@ -377,6 +395,24 @@ void helper_fpu_math(CPUState *env, uint32_t insn) {
|
||||
case 0x05: res = fst0 & 0x7FFFFFFFFFFFFFFFULL; break; // abs.d
|
||||
case 0x07: res = fst0 ^ 0x8000000000000000ULL; break; // neg.d
|
||||
case 0x08: res = float64_to_int64(wt0, &env->fp_status); break; // round.l.d
|
||||
case 0x09: { // trunc.l.d - 双精度截断为长整数
|
||||
res = (uint64_t)float64_to_int64(wt0, &env->fp_status);
|
||||
break;
|
||||
}
|
||||
case 0x0A: { // ceil.l.d - 双精度向上取整为长整数
|
||||
int old_mode = get_float_rounding_mode(&env->fp_status);
|
||||
set_float_rounding_mode(float_round_up, &env->fp_status);
|
||||
res = (uint64_t)float64_to_int64(wt0, &env->fp_status);
|
||||
set_float_rounding_mode(old_mode, &env->fp_status);
|
||||
break;
|
||||
}
|
||||
case 0x0B: { // floor.l.d - 双精度向下取整为长整数
|
||||
int old_mode = get_float_rounding_mode(&env->fp_status);
|
||||
set_float_rounding_mode(float_round_down, &env->fp_status);
|
||||
res = (uint64_t)float64_to_int64(wt0, &env->fp_status);
|
||||
set_float_rounding_mode(old_mode, &env->fp_status);
|
||||
break;
|
||||
}
|
||||
case 0x10: { // movf.d - 如果FCC为假则传送
|
||||
uint32_t cc = (insn >> 18) & 0x7;
|
||||
int fcc = (env->fcr31 >> (23 + cc)) & 1;
|
||||
|
||||
@@ -360,7 +360,42 @@ static void disas_cop1(DisasContext *ctx, CPUState *env, uint32_t insn) {
|
||||
tcg_temp_free_i64(t64);
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
case 0x03: // MFHC1 - 读浮点寄存器高 32 位到主 CPU
|
||||
fprintf(stderr, "[MFHC1] PC=%08x insn=%08x rs=%d rt=%d rd=%d\n", ctx->pc, insn, rs, rt, rd);
|
||||
if (!is_zero_reg(rt)) {
|
||||
TCGv t0 = tcg_temp_new();
|
||||
TCGv_i32 t32 = tcg_temp_new_i32();
|
||||
tcg_gen_extrh_i64_i32(t32, fpu_gpr[rd]); // 直接取高 32 位
|
||||
tcg_gen_ext_i32_tl(t0, t32);
|
||||
tcg_gen_ext32s_tl(t0, t0);
|
||||
store_gpr(rt, t0);
|
||||
tcg_temp_free(t0);
|
||||
tcg_temp_free_i32(t32);
|
||||
}
|
||||
break;
|
||||
|
||||
case 0x07: // MTHC1 - 写主 CPU 值到浮点寄存器高 32 位
|
||||
fprintf(stderr, "[MTHC1] PC=%08x insn=%08x rs=%d rt=%d rd=%d\n", ctx->pc, insn, rs, rt, rd);
|
||||
{
|
||||
TCGv t0 = load_gpr(rt);
|
||||
TCGv_i64 t64 = tcg_temp_new_i64();
|
||||
TCGv_i64 t_mask = tcg_temp_new_i64();
|
||||
TCGv_i64 t_val = tcg_temp_new_i64();
|
||||
|
||||
tcg_gen_extu_tl_i64(t_val, t0); // 零扩展到 64 位
|
||||
tcg_gen_shli_i64(t_val, t_val, 32); // 左移 32 位到高半部分
|
||||
tcg_gen_movi_i64(t_mask, 0xFFFFFFFF); // 低 32 位 mask
|
||||
tcg_gen_and_i64(t64, fpu_gpr[rd], t_mask); // 保留低 32 位
|
||||
tcg_gen_or_i64(fpu_gpr[rd], t64, t_val); // 合并
|
||||
|
||||
tcg_temp_free(t0);
|
||||
tcg_temp_free_i64(t64);
|
||||
tcg_temp_free_i64(t_mask);
|
||||
tcg_temp_free_i64(t_val);
|
||||
}
|
||||
break;
|
||||
|
||||
case 0x02: // CFC1 (读控制寄存器)
|
||||
if (rd == 31 && !is_zero_reg(rt)) {
|
||||
TCGv t0 = tcg_temp_new();
|
||||
@@ -420,6 +455,7 @@ static void disas_cop1(DisasContext *ctx, CPUState *env, uint32_t insn) {
|
||||
break;
|
||||
|
||||
default:
|
||||
fprintf(stderr, "[COP1 DEFAULT] PC=%08x insn=%08x rs=%d rt=%d rd=%d\n", ctx->pc, insn, rs, rt, rd);
|
||||
generate_exception_end(ctx, EXCP_RI);
|
||||
break;
|
||||
}
|
||||
@@ -763,7 +799,7 @@ static bool disas_insn(CPUState *env, DisasContext *ctx)
|
||||
break;
|
||||
|
||||
case 0x11: // COP1
|
||||
// 校验 CP0 Status.CU1 位 (假设你的 hflags 中 MIPS_HFLAG_FPU 代表 CU1 状态)
|
||||
fprintf(stderr, "[COP1] PC=%08x insn=%08x rs=%d rt=%d rd=%d\n", ctx->pc, insn, rs, rt, rd);
|
||||
if (!(ctx->hflags & MIPS_HFLAG_FPU)) {
|
||||
// 门禁未开,操作系统拦截,触发浮点懒加载陷阱
|
||||
generate_exception_end(ctx, EXCP_CpU);
|
||||
@@ -795,6 +831,7 @@ static bool disas_insn(CPUState *env, DisasContext *ctx)
|
||||
break;
|
||||
case 0x35: // LDC1 (Load Doubleword to Coprocessor 1)
|
||||
{
|
||||
fprintf(stderr, "[LDC1] PC=%08x insn=%08x rs=%d rt=%d imm=%d\n", ctx->pc, insn, rs, rt, imm);
|
||||
TCGv t0 = load_gpr(rs);
|
||||
TCGv addr = tcg_temp_local_new();
|
||||
TCGv val_lo = tcg_temp_new();
|
||||
@@ -831,6 +868,7 @@ static bool disas_insn(CPUState *env, DisasContext *ctx)
|
||||
|
||||
case 0x3D: // SDC1 (Store Doubleword from Coprocessor 1)
|
||||
{
|
||||
fprintf(stderr, "[SDC1] PC=%08x insn=%08x rs=%d rt=%d imm=%d\n", ctx->pc, insn, rs, rt, imm);
|
||||
TCGv t0 = load_gpr(rs);
|
||||
TCGv addr = tcg_temp_local_new();
|
||||
TCGv val_lo = tcg_temp_new();
|
||||
@@ -967,9 +1005,28 @@ static bool disas_insn(CPUState *env, DisasContext *ctx)
|
||||
|
||||
case 0x01: // REGIMM
|
||||
{
|
||||
TCGv t0 = load_gpr(rs);
|
||||
if (rt == 0x00 || rt == 0x01 || rt == 0x10 || rt == 0x11) {
|
||||
if (rt == 0x10 || rt == 0x11) {
|
||||
TCGv t0 = load_gpr(rs);
|
||||
/* Branch-Likely 变体:rt=0x02(BLTZL), 0x03(BGEZL), 0x12(BLTZALL), 0x13(BGEZALL) */
|
||||
if (rt == 0x02 || rt == 0x03 || rt == 0x12 || rt == 0x13) {
|
||||
if (rt == 0x12 || rt == 0x13) { // Link
|
||||
TCGv res = tcg_temp_new();
|
||||
tcg_gen_movi_tl(res, ctx->pc + 8);
|
||||
store_gpr(31, res);
|
||||
tcg_temp_free(res);
|
||||
}
|
||||
TCGv res = tcg_temp_new();
|
||||
if (rt == 0x02 || rt == 0x12) { // LT
|
||||
tcg_gen_setcondi_tl(TCG_COND_LT, res, t0, 0);
|
||||
} else { // GE
|
||||
tcg_gen_setcondi_tl(TCG_COND_GE, res, t0, 0);
|
||||
}
|
||||
tcg_gen_st_tl(res, cpu_env, offsetof(CPUState, bcond));
|
||||
ctx->btarget = ctx->pc + 4 + (imm << 2);
|
||||
ctx->hflags |= MIPS_HFLAG_BC;
|
||||
tcg_temp_free(res);
|
||||
}
|
||||
else if (rt == 0x00 || rt == 0x01 || rt == 0x10 || rt == 0x11) {
|
||||
if (rt == 0x10 || rt == 0x11) {
|
||||
TCGv res = tcg_temp_new();
|
||||
tcg_gen_movi_tl(res, ctx->pc + 8);
|
||||
store_gpr(31, res);
|
||||
@@ -977,15 +1034,15 @@ static bool disas_insn(CPUState *env, DisasContext *ctx)
|
||||
}
|
||||
TCGv res = tcg_temp_new();
|
||||
if (rt == 0x00 || rt == 0x10) {
|
||||
tcg_gen_setcondi_tl(TCG_COND_LT, res, t0, 0);
|
||||
tcg_gen_setcondi_tl(TCG_COND_LT, res, t0, 0);
|
||||
} else {
|
||||
tcg_gen_setcondi_tl(TCG_COND_GE, res, t0, 0);
|
||||
tcg_gen_setcondi_tl(TCG_COND_GE, res, t0, 0);
|
||||
}
|
||||
|
||||
tcg_gen_st_tl(res, cpu_env, offsetof(CPUState, bcond));
|
||||
|
||||
tcg_gen_st_tl(res, cpu_env, offsetof(CPUState, bcond));
|
||||
ctx->btarget = ctx->pc + 4 + (imm << 2);
|
||||
ctx->hflags |= MIPS_HFLAG_BC;
|
||||
|
||||
|
||||
tcg_temp_free(res);
|
||||
}
|
||||
else if (rt >= 0x08 && rt <= 0x0E && rt != 0x0D) {
|
||||
@@ -1031,19 +1088,60 @@ static bool disas_insn(CPUState *env, DisasContext *ctx)
|
||||
}
|
||||
break;
|
||||
|
||||
case 0x14: // BEQL - Branch Equal Likely
|
||||
case 0x15: // BNEL - Branch Not Equal Likely
|
||||
{
|
||||
/*
|
||||
* Branch-Likely:用 bcond/btarget 机制,和普通分支一样。
|
||||
* 延迟槽正常执行,分支解析时根据 bcond 决定跳转还是 PC+8。
|
||||
*/
|
||||
TCGv t0 = load_gpr(rs);
|
||||
TCGv t1 = load_gpr(rt);
|
||||
TCGv res = tcg_temp_new();
|
||||
|
||||
tcg_gen_setcond_tl((op == 0x14) ? TCG_COND_EQ : TCG_COND_NE, res, t0, t1);
|
||||
tcg_gen_st_tl(res, cpu_env, offsetof(CPUState, bcond));
|
||||
|
||||
ctx->btarget = ctx->pc + 4 + (imm << 2);
|
||||
ctx->hflags |= MIPS_HFLAG_BC;
|
||||
|
||||
tcg_temp_free(t0);
|
||||
tcg_temp_free(t1);
|
||||
tcg_temp_free(res);
|
||||
}
|
||||
break;
|
||||
|
||||
case 0x06: // BLEZ
|
||||
case 0x07: // BGTZ
|
||||
{
|
||||
TCGv t0 = load_gpr(rs);
|
||||
TCGv res = tcg_temp_new();
|
||||
|
||||
|
||||
if (op == 0x06) tcg_gen_setcondi_tl(TCG_COND_LE, res, t0, 0);
|
||||
else tcg_gen_setcondi_tl(TCG_COND_GT, res, t0, 0);
|
||||
|
||||
tcg_gen_st_tl(res, cpu_env, offsetof(CPUState, bcond));
|
||||
|
||||
tcg_gen_st_tl(res, cpu_env, offsetof(CPUState, bcond));
|
||||
ctx->btarget = ctx->pc + 4 + (imm << 2);
|
||||
ctx->hflags |= MIPS_HFLAG_BC;
|
||||
|
||||
|
||||
tcg_temp_free(t0);
|
||||
tcg_temp_free(res);
|
||||
}
|
||||
break;
|
||||
|
||||
case 0x16: // BLEZL - Branch Less Equal Zero Likely
|
||||
case 0x17: // BGTZL - Branch Greater Than Zero Likely
|
||||
{
|
||||
TCGv t0 = load_gpr(rs);
|
||||
TCGv res = tcg_temp_new();
|
||||
|
||||
if (op == 0x16) tcg_gen_setcondi_tl(TCG_COND_LE, res, t0, 0);
|
||||
else tcg_gen_setcondi_tl(TCG_COND_GT, res, t0, 0);
|
||||
|
||||
tcg_gen_st_tl(res, cpu_env, offsetof(CPUState, bcond));
|
||||
ctx->btarget = ctx->pc + 4 + (imm << 2);
|
||||
ctx->hflags |= MIPS_HFLAG_BC;
|
||||
|
||||
tcg_temp_free(t0);
|
||||
tcg_temp_free(res);
|
||||
}
|
||||
@@ -1254,8 +1352,8 @@ int gen_intermediate_code(CPUState *env, DisasContextBase *dcbase) {
|
||||
|
||||
if (!disas_insn(env, ctx)) {
|
||||
tcg_gen_movi_tl(cpu_PC, ctx->pc);
|
||||
tcg_gen_exit_tb(0);
|
||||
return 0;
|
||||
tcg_gen_exit_tb(0);
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (ctx->hflags & MIPS_HFLAG_DSLOT) {
|
||||
@@ -1271,29 +1369,29 @@ int gen_intermediate_code(CPUState *env, DisasContextBase *dcbase) {
|
||||
tcg_gen_andi_i32(t_hflags, t_hflags, ~(MIPS_HFLAG_DSLOT | MIPS_HFLAG_B | MIPS_HFLAG_BC | MIPS_HFLAG_BR));
|
||||
tcg_gen_st_i32(t_hflags, cpu_env, offsetof(CPUState, hflags));
|
||||
tcg_temp_free_i32(t_hflags);
|
||||
|
||||
|
||||
tcg_gen_exit_tb(0); // Renode 兼容:退出基本块,让主循环执行刚才写入 PC 的目标
|
||||
}
|
||||
}
|
||||
else if (ctx->hflags & MIPS_HFLAG_BC) {
|
||||
int l1 = gen_new_label();
|
||||
int l_end = gen_new_label();
|
||||
|
||||
int l_end = gen_new_label();
|
||||
|
||||
TCGv bv = tcg_temp_new();
|
||||
tcg_gen_ld_tl(bv, cpu_env, offsetof(CPUState, bcond));
|
||||
tcg_gen_brcondi_tl(TCG_COND_EQ, bv, 0, l1);
|
||||
|
||||
tcg_gen_ld_tl(bv, cpu_env, offsetof(CPUState, bcond));
|
||||
tcg_gen_brcondi_tl(TCG_COND_EQ, bv, 0, l1);
|
||||
|
||||
TCGv t_dest = tcg_temp_new();
|
||||
tcg_gen_ld_tl(t_dest, cpu_env, offsetof(CPUState, btarget));
|
||||
tcg_gen_mov_tl(cpu_PC, t_dest);
|
||||
tcg_temp_free(t_dest);
|
||||
tcg_gen_br(l_end);
|
||||
|
||||
tcg_gen_br(l_end);
|
||||
|
||||
gen_set_label(l1);
|
||||
tcg_gen_movi_tl(cpu_PC, dcbase->pc + 4);
|
||||
|
||||
tcg_gen_movi_tl(cpu_PC, dcbase->pc + 4);
|
||||
|
||||
gen_set_label(l_end);
|
||||
tcg_temp_free(bv);
|
||||
|
||||
tcg_temp_free(bv);
|
||||
|
||||
TCGv_i32 t_hflags = tcg_temp_new_i32();
|
||||
tcg_gen_ld_i32(t_hflags, cpu_env, offsetof(CPUState, hflags));
|
||||
tcg_gen_andi_i32(t_hflags, t_hflags, ~(MIPS_HFLAG_DSLOT | MIPS_HFLAG_B | MIPS_HFLAG_BC | MIPS_HFLAG_BR));
|
||||
@@ -1302,7 +1400,7 @@ int gen_intermediate_code(CPUState *env, DisasContextBase *dcbase) {
|
||||
|
||||
tcg_gen_exit_tb(0); // Renode 兼容:退出基本块,让主循环执行刚才写入 PC 的目标
|
||||
}
|
||||
ctx->base.is_jmp = DISAS_TB_JUMP;
|
||||
ctx->base.is_jmp = DISAS_TB_JUMP;
|
||||
ctx->hflags &= ~(MIPS_HFLAG_DSLOT | MIPS_HFLAG_B | MIPS_HFLAG_BC | MIPS_HFLAG_BR);
|
||||
} else if (ctx->hflags & (MIPS_HFLAG_B | MIPS_HFLAG_BC | MIPS_HFLAG_BR)) {
|
||||
ctx->hflags |= MIPS_HFLAG_DSLOT;
|
||||
|
||||
@@ -60,6 +60,9 @@ void attach_free(void *free_callback)
|
||||
|
||||
void TCG_free(void *ptr)
|
||||
{
|
||||
if(ptr == NULL) {
|
||||
return;
|
||||
}
|
||||
_TCG_free(ptr);
|
||||
}
|
||||
|
||||
|
||||
@@ -15,10 +15,10 @@
|
||||
"System.ServiceModel.Duplex": "4.8.1",
|
||||
"System.ServiceModel.Federation": "4.8.1",
|
||||
"System.ServiceModel.NetTcp": "4.8.1",
|
||||
"AntShell.Reference": "1.0.9669.26120",
|
||||
"AntShell.Reference": "1.0.9672.29300",
|
||||
"BigGustave.Reference": "1.0.0.0",
|
||||
"crypto.Reference": "1.9.0.0",
|
||||
"CxxDemangler.Reference": "1.0.9669.26104",
|
||||
"CxxDemangler.Reference": "1.0.9672.29287",
|
||||
"ELFSharp.Reference": "0.1.1.0",
|
||||
"FdtSharp.Reference": "0.1.0.0",
|
||||
"Infrastructure.Reference": "1.0.0.0",
|
||||
@@ -1782,10 +1782,10 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"AntShell.Reference/1.0.9669.26120": {
|
||||
"AntShell.Reference/1.0.9672.29300": {
|
||||
"runtime": {
|
||||
"AntShell.dll": {
|
||||
"assemblyVersion": "1.0.9669.26120",
|
||||
"assemblyVersion": "1.0.9672.29300",
|
||||
"fileVersion": "0.0.0.0"
|
||||
}
|
||||
}
|
||||
@@ -1806,10 +1806,10 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"CxxDemangler.Reference/1.0.9669.26104": {
|
||||
"CxxDemangler.Reference/1.0.9672.29287": {
|
||||
"runtime": {
|
||||
"CxxDemangler.dll": {
|
||||
"assemblyVersion": "1.0.9669.26104",
|
||||
"assemblyVersion": "1.0.9672.29287",
|
||||
"fileVersion": "0.0.0.0"
|
||||
}
|
||||
}
|
||||
@@ -2841,7 +2841,7 @@
|
||||
"serviceable": false,
|
||||
"sha512": ""
|
||||
},
|
||||
"AntShell.Reference/1.0.9669.26120": {
|
||||
"AntShell.Reference/1.0.9672.29300": {
|
||||
"type": "reference",
|
||||
"serviceable": false,
|
||||
"sha512": ""
|
||||
@@ -2856,7 +2856,7 @@
|
||||
"serviceable": false,
|
||||
"sha512": ""
|
||||
},
|
||||
"CxxDemangler.Reference/1.0.9669.26104": {
|
||||
"CxxDemangler.Reference/1.0.9672.29287": {
|
||||
"type": "reference",
|
||||
"serviceable": false,
|
||||
"sha512": ""
|
||||
|
||||
@@ -8,10 +8,10 @@
|
||||
".NETCoreApp,Version=v8.0": {
|
||||
"OptionsParser/1.0.0": {
|
||||
"dependencies": {
|
||||
"Microsoft.CSharp": "4.7.0",
|
||||
"Microsoft.NET.Test.Sdk": "16.9.1",
|
||||
"NUnit": "3.13.1",
|
||||
"NUnit3TestAdapter": "3.17.0",
|
||||
"OptionsParser": "1.0.0"
|
||||
"NUnit3TestAdapter": "3.17.0"
|
||||
},
|
||||
"runtime": {
|
||||
"OptionsParser.dll": {}
|
||||
|
||||
Binary file not shown.
@@ -8,10 +8,10 @@
|
||||
".NETCoreApp,Version=v8.0": {
|
||||
"OptionsParser/1.0.0": {
|
||||
"dependencies": {
|
||||
"Microsoft.CSharp": "4.7.0",
|
||||
"Microsoft.NET.Test.Sdk": "16.9.1",
|
||||
"NUnit": "3.13.1",
|
||||
"NUnit3TestAdapter": "3.17.0",
|
||||
"OptionsParser": "1.0.0"
|
||||
"NUnit3TestAdapter": "3.17.0"
|
||||
},
|
||||
"runtime": {
|
||||
"OptionsParser.dll": {}
|
||||
|
||||
@@ -14,10 +14,10 @@
|
||||
"System.ServiceModel.Duplex": "4.8.1",
|
||||
"System.ServiceModel.Federation": "4.8.1",
|
||||
"System.ServiceModel.NetTcp": "4.8.1",
|
||||
"AntShell.Reference": "1.0.9669.26120",
|
||||
"AntShell.Reference": "1.0.9672.29300",
|
||||
"BigGustave.Reference": "1.0.0.0",
|
||||
"crypto.Reference": "1.9.0.0",
|
||||
"CxxDemangler.Reference": "1.0.9669.26104",
|
||||
"CxxDemangler.Reference": "1.0.9672.29287",
|
||||
"ELFSharp.Reference": "0.1.1.0",
|
||||
"FdtSharp.Reference": "0.1.0.0",
|
||||
"Infrastructure.Reference": "1.0.0.0",
|
||||
@@ -1781,10 +1781,10 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"AntShell.Reference/1.0.9669.26120": {
|
||||
"AntShell.Reference/1.0.9672.29300": {
|
||||
"runtime": {
|
||||
"AntShell.dll": {
|
||||
"assemblyVersion": "1.0.9669.26120",
|
||||
"assemblyVersion": "1.0.9672.29300",
|
||||
"fileVersion": "0.0.0.0"
|
||||
}
|
||||
}
|
||||
@@ -1805,10 +1805,10 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"CxxDemangler.Reference/1.0.9669.26104": {
|
||||
"CxxDemangler.Reference/1.0.9672.29287": {
|
||||
"runtime": {
|
||||
"CxxDemangler.dll": {
|
||||
"assemblyVersion": "1.0.9669.26104",
|
||||
"assemblyVersion": "1.0.9672.29287",
|
||||
"fileVersion": "0.0.0.0"
|
||||
}
|
||||
}
|
||||
@@ -2840,7 +2840,7 @@
|
||||
"serviceable": false,
|
||||
"sha512": ""
|
||||
},
|
||||
"AntShell.Reference/1.0.9669.26120": {
|
||||
"AntShell.Reference/1.0.9672.29300": {
|
||||
"type": "reference",
|
||||
"serviceable": false,
|
||||
"sha512": ""
|
||||
@@ -2855,7 +2855,7 @@
|
||||
"serviceable": false,
|
||||
"sha512": ""
|
||||
},
|
||||
"CxxDemangler.Reference/1.0.9669.26104": {
|
||||
"CxxDemangler.Reference/1.0.9672.29287": {
|
||||
"type": "reference",
|
||||
"serviceable": false,
|
||||
"sha512": ""
|
||||
|
||||
Binary file not shown.
@@ -8,10 +8,10 @@
|
||||
".NETCoreApp,Version=v8.0": {
|
||||
"OptionsParser/1.0.0": {
|
||||
"dependencies": {
|
||||
"Microsoft.CSharp": "4.7.0",
|
||||
"Microsoft.NET.Test.Sdk": "16.9.1",
|
||||
"NUnit": "3.13.1",
|
||||
"NUnit3TestAdapter": "3.17.0",
|
||||
"OptionsParser": "1.0.0"
|
||||
"NUnit3TestAdapter": "3.17.0"
|
||||
},
|
||||
"runtime": {
|
||||
"OptionsParser.dll": {}
|
||||
|
||||
@@ -11,10 +11,10 @@
|
||||
"AntShell": "1.0.0",
|
||||
"Infrastructure": "1.0.0",
|
||||
"StyleCop.Analyzers": "1.1.118",
|
||||
"AntShell.Reference": "1.0.9669.26120",
|
||||
"AntShell.Reference": "1.0.9672.29300",
|
||||
"BigGustave.Reference": "1.0.0.0",
|
||||
"crypto.Reference": "1.9.0.0",
|
||||
"CxxDemangler.Reference": "1.0.9669.26104",
|
||||
"CxxDemangler.Reference": "1.0.9672.29287",
|
||||
"ELFSharp.Reference": "0.1.1.0",
|
||||
"FdtSharp.Reference": "0.1.0.0",
|
||||
"Infrastructure.Reference": "1.0.0.0",
|
||||
@@ -1574,10 +1574,10 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"AntShell.Reference/1.0.9669.26120": {
|
||||
"AntShell.Reference/1.0.9672.29300": {
|
||||
"runtime": {
|
||||
"AntShell.dll": {
|
||||
"assemblyVersion": "1.0.9669.26120",
|
||||
"assemblyVersion": "1.0.9672.29300",
|
||||
"fileVersion": "0.0.0.0"
|
||||
}
|
||||
}
|
||||
@@ -1598,10 +1598,10 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"CxxDemangler.Reference/1.0.9669.26104": {
|
||||
"CxxDemangler.Reference/1.0.9672.29287": {
|
||||
"runtime": {
|
||||
"CxxDemangler.dll": {
|
||||
"assemblyVersion": "1.0.9669.26104",
|
||||
"assemblyVersion": "1.0.9672.29287",
|
||||
"fileVersion": "0.0.0.0"
|
||||
}
|
||||
}
|
||||
@@ -2507,7 +2507,7 @@
|
||||
"serviceable": false,
|
||||
"sha512": ""
|
||||
},
|
||||
"AntShell.Reference/1.0.9669.26120": {
|
||||
"AntShell.Reference/1.0.9672.29300": {
|
||||
"type": "reference",
|
||||
"serviceable": false,
|
||||
"sha512": ""
|
||||
@@ -2522,7 +2522,7 @@
|
||||
"serviceable": false,
|
||||
"sha512": ""
|
||||
},
|
||||
"CxxDemangler.Reference/1.0.9669.26104": {
|
||||
"CxxDemangler.Reference/1.0.9672.29287": {
|
||||
"type": "reference",
|
||||
"serviceable": false,
|
||||
"sha512": ""
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Reference in New Issue
Block a user