- 노말엔딩을 공략 안보고 하는데, 길찾기가 어려웠음- 진엔딩 파밍시 목주 노가다가 너무 귀찮음
개요얼마전 타입스크립트 교육을 받으면서, typescript 의 generics 를 다뤘습니다.교육을 받는 중 별 생각없이 c++ 개념으로 템플릿 특수화나 sfinae 같은걸 사용하면 되는게 아닌가? 라는 생각을 했고,문득 언어별로 generics 를 다루는 철학이 다르다는 생각을 했습니다.이를 간단하게 정리해봅니다.c++ 과 typescript 의 generics 공통점공통점은 type 을 변수처럼 사용하고 싶다라는 개념입니다.예를 들어 list 를 만들 때 primitive type 뿐 아니라 내가 만든 구조체나 타입의 리스트를 만들고 싶은 경우 이를 각각 구현하는 것이 아니라 코드 한벌로 구현이 가능합니다. c++template class ListNode { T data; ListNode* next..
TTBRTranslation Table Base Register가상 주소를 싥제 주소로 매핑시 사용하는 레지스터TTBR0_EL1 : 유저 스페이스Holds the base address of the translation table for the initial lookup for stage 1 of the translation of an address from the lower VA range in the EL1&0 translation regime, and other information for this translation regime.TTBR1: 커널 스페이스Holds the base address of the translation table for the initial lookup for stage..
primary cpu 는 커널에 진입할때 모든 exception 이 마스크된 채로 들어옵니다. DAIF = 1111디버깅과(D) SError(A) 를 마스킹 해제 해야 합니다.IF 는 irqchip (gic) 초기화 후 열수 있기 때문에 마스킹 합니다.#define DAIF_PROCCTX_NOIRQ (PSR_I_BIT | PSR_F_BIT)void __init __no_sanitize_address setup_arch(char **cmdline_p){ /* * The primary CPU enters the kernel with all DAIF exceptions masked. * * We must unmask Debug and SError before preemption..
https://clucle.tistory.com/entry/procS-primaryswitchedhttps://clucle.tistory.com/entry/jumplabel 이전 포스팅에서 다뤘던 scs, jump label 을 사용하여 shadow call stack 을 초기화 합니다.void __init __no_sanitize_address setup_arch(char **cmdline_p){ // scs 초기화 dynamic_scs_init();scs 는 stack pointer 를 레지스터 뿐 아니라, task 구조체에 저장하고 불러옵니다.#ifdef CONFIG_DYNAMIC_SCSDEFINE_STATIC_KEY_FALSE(dynamic_scs_enabled);#endif#ifdef..
void __init __no_sanitize_address setup_arch(char **cmdline_p){ parse_early_param();early param 이란 어떤것이고, 어떻게 사용하는지 알아보자.early param.init.setup 섹션에 미리 등록한 parameter 가 early param 으로 사용 가능합니다.__setup_start 에 들어갈 수 있도록 매크로로 정의합니다.extern const struct obs_kernel_param __setup_start[], __setup_end[];/* * Only for really core code. See moduleparam.h for the normal way. * * Force the alignment so t..
setup_arch jump_label_init 분석// arch/arm64/kernel/setup.cvoid __init __no_sanitize_address setup_arch(char **cmdline_p){ jump_label_init();}jump_label_init구조체 정의// arch/arm/include/asm/jump_label.htypedef u32 jump_label_t;struct jump_entry { jump_label_t code; jump_label_t target; jump_label_t key; };struct static_key { atomic_t enabled;#ifdef CONFIG_JUMP_LABEL/* * Note: * To ma..
struct mm_struct init_mm = { .mm_mt = MTREE_INIT_EXT(mm_mt, MM_MT_FLAGS, init_mm.mmap_lock), .pgd = swapper_pg_dir,void __init __no_sanitize_address setup_arch(char **cmdline_p){ // vmlinux.lds.S 에 있는 값을 변수로 옮김 setup_initial_init_mm(_stext, _etext, _edata, _end); *cmdline_p = boot_command_line; // Kernel Address Space Layout Randomization kaslr_init(); // fi..
- Total
 
- Today
 
- Yesterday
 
- Obstacle Avoidance
 - Reciprocal n-body Collision Avoidance
 - boost
 - mysql
 - print shared_ptr class member variable
 - hole-punching
 - vrpit
 - Visual Studio
 - cockroach db
 - 에러 위치 찾기
 - vr핏
 - ad skip
 - Golang
 - 코어 남기기
 - 카카오
 - RVO
 - 우리는 vr핏이라고 부릅니다
 - C++
 - shared_from_this
 - 잘못된 빨간줄
 - set value
 - red underline
 - 면접
 - 영상 픽셀화 하기
 - it's called a vrpit
 - 봄날에 스케치
 - SuffixArray
 - chrome-extension
 - Quest2
 - 클래스 맴버 변수 출력하기
 
| 일 | 월 | 화 | 수 | 목 | 금 | 토 | 
|---|---|---|---|---|---|---|
| 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 | 
