일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- OSR
- android inject
- on stack replacement
- so inject
- TLS
- Linux custom packer
- linux debugging
- 난독화
- v8 optimizing
- custom packer
- Obfuscator
- 안티디버깅
- pinpoint
- anti debugging
- apm
- pthread
- Linux packer
- uftrace
- tracerpid
- Android
- LLVM Obfuscator
- LLVM 난독화
- v8 tracing
- LLVM
- linux thread
- thread local storage
- initial-exec
- tracing
- on-stack replacement
- Injection
Archives
- Today
- Total
Why should I know this?
Backend 주요 로직 모음 본문
SmallVector<Register, 8> WorkList;
WorkList.push_back(RetagReg);
while (!WorkList.empty()) {
Register UseReg = WorkList.pop_back_val();
for (auto &UseI : MRI->use_instructions(UseReg)) {
unsigned Opcode = UseI.getOpcode();
if (Opcode == AArch64::STGi || Opcode == AArch64::ST2Gi ||
Opcode == AArch64::STZGi || Opcode == AArch64::STZ2Gi ||
Opcode == AArch64::STGPi || Opcode == AArch64::STGloop ||
Opcode == AArch64::STZGloop || Opcode == AArch64::STGloop_wback ||
Opcode == AArch64::STZGloop_wback)
continue;
if (UseI.isCopy()) {
Register DstReg = UseI.getOperand(0).getReg();
if (DstReg.isVirtual())
WorkList.push_back(DstReg);
continue;
}
LLVM_DEBUG(dbgs() << "[" << ST.FI << ":" << ST.Tag << "] use of %"
<< Register::virtReg2Index(UseReg) << " in " << UseI
<< "\n");
Score++;
}
}
Peephole 최적화에서 자주 보던 패턴. AArch64 Backend에 맞게 구성되어 있다.
'LLVM-STUDY > BACKEND' 카테고리의 다른 글
ARM Instruction] UBFM, UBFX, UBFIZ, LSR, LSL (0) | 2024.04.20 |
---|---|
[AArch64] Generate stp for complex repeating constansts#514 (0) | 2024.03.21 |
Comments