当前位置: 首页 > news >正文

网站开发w亿玛酷1流量订制网站建设工作

网站开发w亿玛酷1流量订制,网站建设工作,学校网站制作公司,免费网络推广及优化dotnet for mips64 的 ea 版本已经发布https://github.com/gsvm/loongson-dotnet/releases在龙芯上调试CoreCLR由于lldb在龙芯上工作不正常[1]#xff0c;只有gdb可以用来调试CoreCLR。因为需要调试JIT代码#xff0c;所以我们关上gdb分页#xff0c;不处理SIG34信号#x… dotnet for mips64 的 ea 版本已经发布https://github.com/gsvm/loongson-dotnet/releases在龙芯上调试CoreCLR由于lldb在龙芯上工作不正常[1]只有gdb可以用来调试CoreCLR。因为需要调试JIT代码所以我们关上gdb分页不处理SIG34信号$ cat ~/.gdbinit set pagination off handle SIG34 nostop noprint调试JIT代码export CORE_LIBRARIES/home/loongson/corefx-3.1-Linux.mips64.Debug export COMPlus_JitFunctionTrace1 export COMPlus_JitHaltMain gdb -exr --args ./bin/Product/Linux.mips64.Debug/corerun /home/loongson/Hello.dll | tee gdb.logJitHaltMain可以在Main方法的序言处插入break指令然后我们跳过break指令(gdb) set $pc4 (gdb) x/22i $pc-440xff7c983aac: li zero,0x730xff7c983ab0: nop0xff7c983ab4: 0xf200000xff7c983ab8: sdc1 $f2,-6100(s6)0xff7c983abc: dsra32 zero,zero,0x30xff7c983ac0: 0x7cc11db80xff7c983ac4: dsra32 zero,zero,0x30xff7c983ac8: 0x7cc494580xff7c983acc: dsra32 zero,zero,0x30xff7c983ad0: nop0xff7c983ad4: break0xff7c983ad8: daddiu sp,sp,-320xff7c983adc: sd s8,0(sp)0xff7c983ae0: sd ra,8(sp)0xff7c983ae4: move s8,sp0xff7c983ae8: sd a0,24(s8)0xff7c983aec: lui a0,0xff0xff7c983af0: ori a0,a0,0x7caf0xff7c983af4: dsll a0,a0,0x100xff7c983af8: ori a0,a0,0x7a880xff7c983afc: lw a0,0(a0)0xff7c983b00: sltiu at,a0,1查看一下传参整型寄存器的值(gdb) i r a0 a0: 0xff5800fa28 (gdb) x/g 0xff5800fa28 0xff5800fa28: 0x000000ff7caf7c30然后用si指令级的单步跟踪。还可以使用“硬”watchpoint[2]调试GC相关问题(gdb) watch *0xff68001bf8 Hardware watchpoint 1: *0xff68001bf8 (gdb) c Continuing.... Thread 1 corerun hit Hardware watchpoint 1: *0xff68001bf8Old value 0 New value 1476465840 JIT_WriteBarrier () at /home/loongson/coreclr/src/vm/mips64/asmhelpers.S:206(gdb) c Continuing.... Thread 1 corerun hit Hardware watchpoint 1: *0xff68001bf8Old value 1476465840 New value 1476577368 JIT_WriteBarrier () at /home/loongson/coreclr/src/vm/mips64/asmhelpers.S:206如何跟踪是“谁”生成的JIT代码测试用例JIT/Methodical/Invoke/thiscall/dbgthisnull/dbgthisnull.exe[3]加压JIT、GC的时候该测试用例复现段错误export CORE_LIBRARIES/home/loongson/corefx-3.1-Linux.mips64.Debug export COMPlus_JitFunctionTrace1 export COMPlus_JitStress2 export COMPlus_GCStress1 export COMPlus_HeapVerify1 gdb -exr --args ./bin/Product/Linux.mips64.Debug/corerun ./bin/tests/Linux.mips64.Debug/JIT/Methodical/Invoke/thiscall/_dbgthisnull/_dbgthisnull.exe | tee gdb.log我们发现该测试用例“故意”造空指针访存Program received signal SIGSEGV, Segmentation fault. 0x000000ff7c985948 in ?? () (gdb) x/22i $pc-440xff7c98591c: dext a0,a0,0x0,0x80xff7c985920: sltiu at,a0,10xff7c985924: beqz at,0xff7c9859440xff7c985928: nop0xff7c98592c: b 0xff7c98596c0xff7c985930: nop0xff7c985934: nop0xff7c985938: nop0xff7c98593c: nop0xff7c985940: nop0xff7c985944: ld a0,32(s8)0xff7c985948: ldc1 $f0,8(a0)0xff7c98594c: sdc1 $f0,24(s8)0xff7c985950: nop0xff7c985954: b 0xff7c9859a00xff7c985958: nop0xff7c98595c: nop0xff7c985960: nop0xff7c985964: nop0xff7c985968: nop0xff7c98596c: bal 0xff7c9859740xff7c985970: nop (gdb) i r a0 a0: 0x0那么ldc1 $f0,8(a0)这条指令是由“谁”生成的呢0x000000ff7c985948 in ?? () (gdb) x/76i 0x000000ff7c915948-1520xff7c9158b0: daddiu sp,sp,-48 -------- CodeGen::genFnProlog - CodeGen::genAllocLclFrame0xff7c9158b4: sd s8,0(sp) - CodeGen::genPushCalleeSavedRegisters0xff7c9158b8: sd ra,8(sp) - ...0xff7c9158bc: move s8,sp0xff7c9158c0: sd a0,32(s8)0xff7c9158c4: sw a1,40(s8) -------- CodeGen::genFnProlog0xff7c9158c8: lui a0,0xff ----- set_Reg_To_Imm0xff7c9158cc: ori a0,a0,0x7ca80xff7c9158d0: dsll a0,a0,0x100xff7c9158d4: ori a0,a0,0x7b50 ----- set_Reg_To_Imm end0xff7c9158d8: lw a0,0(a0)0xff7c9158dc: sltiu at,a0,1 ---------- CodeGen::genCodeForCompare0xff7c9158e0: beqz at,0xff7c9159000xff7c9158e4: nop0xff7c9158e8: b 0xff7c9159180xff7c9158ec: nop0xff7c9158f0: nop0xff7c9158f4: nop0xff7c9158f8: nop0xff7c9158fc: nop ----------- CodeGen::genCodeForCompare0xff7c915900: lui a0,0xff0xff7c915904: ori a0,a0,0xf6a00xff7c915908: dsll a0,a0,0x100xff7c91590c: ori a0,a0,0x8fa80xff7c915910: jalr a00xff7c915914: move t9,a00xff7c915918: lw a0,40(s8)0xff7c91591c: dext a0,a0,0x0,0x80xff7c915920: sltiu at,a0,1 ---------- CodeGen::genCodeForCompare0xff7c915924: beqz at,0xff7c9159440xff7c915928: nop0xff7c91592c: b 0xff7c91596c0xff7c915930: nop0xff7c915934: nop0xff7c915938: nop0xff7c91593c: nop0xff7c915940: nop ----------- CodeGen::genCodeForCompare0xff7c915944: ld a0,32(s8)0xff7c915948: ldc1 $f0,8(a0)0xff7c91594c: sdc1 $f0,24(s8)0xff7c915950: nop0xff7c915954: b 0xff7c9159a00xff7c915958: nop0xff7c91595c: nop0xff7c915960: nop0xff7c915964: nop0xff7c915968: nop0xff7c91596c: bal 0xff7c9159740xff7c915970: nop0xff7c915974: li at,0x440xff7c915978: daddu a0,at,ra0xff7c91597c: ldc1 $f0,0(a0)0xff7c915980: sdc1 $f0,24(s8)0xff7c915984: nop0xff7c915988: b 0xff7c9159a00xff7c91598c: nop0xff7c915990: nop0xff7c915994: nop0xff7c915998: nop0xff7c91599c: nop0xff7c9159a0: ldc1 $f0,24(s8)0xff7c9159a4: ld ra,8(sp) ---------- CodeGen::genFnEpilog - CodeGen::genPopCalleeSavedRegisters0xff7c9159a8: ld s8,0(sp) - ...0xff7c9159ac: daddiu sp,sp,480xff7c9159b0: jr ra0xff7c9159b4: nop ---------- CodeGen::genFnEpilog...ldc1 $f0,8(a0)是由emitter::emitInsLoadStoreOp和emitter::emitIns_R_R_I生成。你可以“故意”修改src/jit/codegenmips64.cpp[4]的CodeGen::genCodeForIndir添加冗余的nop指令diff --git a/src/jit/codegenmips64.cpp b/src/jit/codegenmips64.cpp index ef18106..465bc17 100644 --- a/src/jit/codegenmips64.cppb/src/jit/codegenmips64.cpp-8290,6 8290,7 void CodeGen::genCodeForIndir(GenTreeIndir* tree)}getEmitter()-emitInsLoadStoreOp(ins, emitActualTypeSize(type), targetReg, tree);instGen(INS_nop);if (emitBarrier){重新编译就可以看到“故意”生成的冗余nop指令(gdb) x/22i $pc-440xff7c936560: dext a0,a0,0x0,0x80xff7c936564: sltiu at,a0,10xff7c936568: beqz at,0xff7c9365880xff7c93656c: nop0xff7c936570: b 0xff7c9365b40xff7c936574: nop0xff7c936578: nop0xff7c93657c: nop0xff7c936580: nop0xff7c936584: nop0xff7c936588: ld a0,32(s8)0xff7c93658c: ldc1 $f0,8(a0)0xff7c936590: nop0xff7c936594: sdc1 $f0,24(s8)0xff7c936598: nop0xff7c93659c: b 0xff7c9365e80xff7c9365a0: nop0xff7c9365a4: nop0xff7c9365a8: nop0xff7c9365ac: nop0xff7c9365b0: nop0xff7c9365b4: bal 0xff7c9365bc0xff7c9365b8: nop还可以通过grep ldc1 -rn src/jit/来了解访存相关的代码生成。因为ldc1    $f0,8(a0)属于RRI指令形式所以可以在emitter::emitIns_R_R_I“故意”加入断言diff --git a/src/jit/emitmips64.cpp b/src/jit/emitmips64.cpp index 06b574d..9d19a52 100644 --- a/src/jit/emitmips64.cppb/src/jit/emitmips64.cpp-2513,6 2513,7 void emitter::emitIns_R_R_I(assert((-32768 imm) (imm 32767));assert(isFloatReg(reg1));assert(isGeneralRegisterOrR0(reg2));assert(imm ! 8 reg1 ! REG_F0 reg2 ! REG_A0);break;case INS_c_f_s:gdb bt一下就能知道具体的函数例如emitter::emitInsLoadStoreOp以及行数。1. https://github.com/dotnet/runtime/issues/374052. https://hev.cc/2758.html3. https://github.com/gsvm/coreclr/blob/mips64-port/tests/src/JIT/Methodical/Invoke/thiscall/_dbgthisnull.ilproj4. https://github.com/gsvm/coreclr/blob/mips64-port/src/jit/codegenmips64.cpp相关文章龙芯团队完成CoreCLR MIPS64移植在github开源Asp.Net终于可以在龙芯服务器上运行啦Jexus成功完成对国产系列CPU的适配.NET Core 对龙芯的支持情况和对 .NET Core 开发嵌入式的思考龙芯团队 在移值 MIPS64 下的.NET Core 进度速报
http://wiki.neutronadmin.com/news/350027/

相关文章:

  • 全国卫生机构建设管理系统网站上海注册公司买新能源车
  • 成都代做网站手机网站大全网站
  • 深泽网站制作如何快速新建一个网站
  • 优化网站专题如何欣赏网站
  • o2o网站建设流程sjz住房建设局网站
  • 房地产网站设计方案网站排名alexa
  • 怎样自己搭建一个做影视的网站代运营怎么做
  • 凡科网站建设网站延吉网站建设彩票
  • 设计网站页面好处介休做网站
  • 做外贸如何浏览国外网站帝国手机网站cms系统
  • 国家新闻大事网站如何做seo规划
  • 网站建设里怎么写文章米拓网站建设
  • 做网站如何屏蔽中国的ipwap网站和internet网站
  • 网站信息备案查询系统阿里巴巴对外贸易平台
  • 海北公司网站建设完全可定制的软件
  • 网站页面权重在阿里云做网站教程
  • 做网站需要的大图网络推广大概需要多少钱
  • 网站建设和推广电话销售话术网站建设好后能直接打开吗
  • 安徽网站开发与维护专业CDN 网站是否需要重新备案
  • 女性门户网站模板哔哩哔哩网页版打开
  • 网站建设 软件开发什么网站专做宠物物品
  • 西宁网站建设报价ew君博贴心2015网站备案没下来
  • 直播平台网站建设触屏手机网站设计
  • 比较好的高端网站制作公司呼和浩特免费制作网站
  • 网站建设和系统集成wordpress手机编辑器插件
  • 医疗 企业 网站制作泰安房产网
  • 网站建设公司怎么做的中铁三局招聘事件
  • 如何做彩票网站信息奉化市住房和城乡建设局网站
  • 钓鱼网站在线下载网站服务器出错了怎么办
  • 上海专业做网站较好的公司有哪些wordpress商品列表