| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- tracing
- initial-exec
- pthread
- anti debugging
- LLVM
- linux debugging
- on stack replacement
- Linux custom packer
- linux thread
- LLVM 난독화
- v8 tracing
- OSR
- Injection
- thread local storage
- Linux packer
- v8 optimizing
- LLVM Obfuscator
- Android
- so inject
- apm
- pinpoint
- on-stack replacement
- uftrace
- tracerpid
- 난독화
- 안티디버깅
- custom packer
- android inject
- TLS
- Obfuscator
- Today
- Total
목록전체 글 (146)
Why should I know this?
https://alive2.llvm.org/ce/z/AE8Wid (X >= ~Y) || ((X + Y) pred Z) ; == false => (X Compiler Explorer - LLVM IR (alive-tv); Transform ; uadd_sat(X, Y) pred Z ; into ; (-1 pred Z) == true => (X >= ~Y) || ((X + Y) pred Z) ; == false => (X alive2.llvm.org
https://github.com/llvm/llvm-project/issues/167055 Missed Optimization: Fold x - umin(x,13) define i1 @src(i64 %arg0) { %v0 = tail call i64 @llvm.umin.i64(i64 %arg0, i64 13) %v1 = sub nsw i64 %arg0, %v0 %v2 = icmp slt i64 %v1, 2 ret i1 %v2 } define i1 @tgt(i64 %arg0) { %v0 = icmp slt i64 ...github.com 위 issue 를 통해 missed-optimization Case Study를 해보자. 다음과 같은 코드는 define i1 @src_s1(i16 %arg0) { %v..
개인적으로 약간 혼란스러워서 정리해봤습니다 define i1 @src(i16 %arg0) { %v0 = tail call i16 @llvm.umin.i16(i16 %arg0, i16 13) %v1 = sub nsw i16 %arg0, %v0 %v2 = icmp slt i16 %v1, 2 ret i1 %v2} 위의 코드는 아래와 같이 최적화 할 수 있습니다.define i1 @tgt(i16 %arg0) { %v0 = icmp slt i16 %arg0, 15 ret i1 %v0} 현재는 이렇게 최적화 하고 있죠define i1 @src2(i16 %arg0) local_unnamed_addr #0 { %1 = add i16 %arg0, 32755 %v2 = icmp ult i16 %1, -32..
https://rust.godbolt.org/z/56zo46zfc Compiler Explorer - C++__m128d _mm_complexmult_pd(__m128d a, __m128d b) { __m128d A; A[0] = a[0]*b[0]; A[1] = a[0]*b[1]; __m128d B; B[0] = a[1]*b[1]; B[1] = a[1]*b[0]; return _mm_addsub_pd(A, B); } __m128d _mm_complexmult_pd_naive(__m128d a, __m128d b) { __m128d A; A[0] = a[0]*brust.godbolt.org __m128d _mm_complexmult_pd_naive(__m128d a, __m128d b){ __m128d A..
Dominate 뜻 (컴퓨터 과학 및 그래프 이론 맥락에서)컴퓨터 과학에서, 특히 DominateTree(지배 트리, Dominator Tree)와 관련된 맥락에서 "Dominate"는 **제어 흐름 그래프(CFG, Control Flow Graph)**에서 특정 노드가 다른 노드로 가는 경로를 제어하는 관계를 의미합니다. 구체적으로, 노드 A가 노드 B를 Dominate(지배)한다는 것은 **시작 노드(Entry)**에서 B로 가는 모든 경로가 반드시 A를 거쳐야 함을 뜻합니다.정의:노드 A가 노드 B를 Dominate한다 (A dom B) = 시작점에서 B로 가는 모든 경로가 A를 포함한다.추가로, A가 B를 Strictly Dominate한다면, A ≠ B이어야 합니다.즉, A는 B로 가는 필수적인..
define 8 x i16> @src(4 x i16> %x, 4 x i16> %y, 4 x i16> %z) { %cmp.xy = icmp slt 4 x i16> %x, %y %cmp.yz = icmp slt 4 x i16> %y, %z %select.xz = select 4 x i1> %cmp.xy, 4 x i16> %x, 4 x i16> %z %select.yx = select 4 x i1> %cmp.yz, 4 x i16> %y, 4 x i16> %x %res = shufflevector 4 x i16> %select.xz, 4 x i16> %select.yx, 8 x i32> i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7> ret 8 x i16> ..
