xieby1
🎉2024.01.26
每隔两小时设一个闹钟⏰
也就一晚上的事情嘛😼
绝对不会耽误明天的工期
找到了导致性能下降的commit …
case X86_INS_CALL: switch (oprs_type) {
case OT_OPR0_I: {
if (szs[0] == 8) {
// fuck capstone change relative imm to abosolute address
uint64_t rel_imm = imms[0] - macroop->address - macroop->size;
ub.issuec({opc2c_limm_sz8, X86OPR_T1, encode_imm(rel_imm)}, {rel_imm});
ub.issuec({opc0_stcall}, {});
ub.issuec({opc2c_subimm_sz8, X86OPR_RSP, encode_imm(8)}, {8});
ub.issuec({opc1c_wripcall, X86OPR_T1}, {});
return true;
}
} break;
} break; // X86_INS_CALL
case X86_INS_CALL: switch (oprs_type) {
case OT_OPR0_I: {
if (szs[0] == 8) {
// fuck capstone change relative imm to abosolute address
uint64_t rel_imm = imms[0] - macroop->address - macroop->size;
ub.issuec({opc2c_limm_sz8, X86OPR_T1, encode_imm(rel_imm)}, {rel_imm});
ub.issuec({opc0_stcall}, {});
ub.issuec({opc2c_subimm_sz8, X86OPR_RSP, encode_imm(8)}, {8});
ub.issuec({opc1c_wripcall, X86OPR_T1}, {});
return true;
}
} break;
} break; // X86_INS_CALL
这个commit就几行指令
盯了一个小时都没想明白
为啥会性能下降呢?
为啥会性能下降呢?
一条X86的CALL_I
原本Gem5
gem5_limm
gem5_stcall
gem5_subimm
gem5_wripcall
替换成了
就出错了
微译器
transutor_limm
transutor_stcall
transutor_subimm
transutor_wripcall
拆分这个commit!
全测一遍!
但是按一定的顺序
\(<14次 \times 2 小时 \approx 28 机时\)
并行:\(2小时\) 😼
如果有良好的测试集的话