일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- epoll_wait
- rfc5508
- DOCKER-USER
- wrefresh
- REDIS
- 어셈블리어
- ncurses
- vtable
- .net core 7
- Compiler
- Docker
- architecture
- 취약점
- .nret core 배포
- iptables
- cbpf
- NAPT
- packet filter
- mvwin
- ioctl
- packet flow
- level trigger
- LOB
- doupdate
- edge trigger
- epoll
- wnourefresh
- BOF
- 풀이
- C언어
- Today
- Total
목록Compiler (2)
Tuuna Computer Science
C++ vtable gdb로 살펴보기 개론 C++의 상속관계에서 다형성을 구현하기 위해서는 Virtual 함수를 사용하여 구현한다. 이를 gdb를 통해서 어떤식으로 구성하는지 알아보자. #include class A { public: virtual void a_func() { std::cout A *ptr = nullptr; 0x00000000004011b8 : mov QWORD PTR [rbp-0x8],0x0 => ptr = &a; 0x00000000004011c0 : lea rax,[rbp-0x18] 0x00000000004011c4 : mov QWORD PTR [rbp-0x8],rax 그리고 parent()함수를 호출하는 어셈블리 코드인데 좀 더 세부적으로 분해를 해보자. => ptr->parent..
BFS 방식 하나의 Start NonTerminal Symbol에서 한번의 유도과정을 거치고 token stream과 일치할 시 종료 그렇지 않으면 유도된 과정을 worklist에 추가하고 제일 앞을 꺼냄. 예시를 보자 grammr이 아래와 같이 있을 때 E→T E→T+E T→int T→(E) worklist → E 를 먼저 넣는다. 그리고 E를 꺼내온다. Start Symbol E는 T와 T+E로 유도가 가능하다. 이를 worklist에 넣는다. worklist→T→T+E 그리고 T를 꺼낸다. T는 int와 (E)로 유도가 가능하다. 이를 worklist에 넣는다. worklist → T+E → int → (E) T+E를 꺼낸다. T+E는 int+E, (E)+E, T+T, T+T+E로 유도가 가능하다...