보호되어 있는 글입니다.
보호되어 있는 글입니다.
ARM(Advanced Risc Machine) : RISC 방식의 32비트 명령어를 사용 ARM 아키텍쳐와 프로세서의 종류 아키텍쳐 프로세서 v4 ARM7TDMI, ARM720T, ARM940T, ARM920T, ARM922T v5TE ARM946E-S, ARM926E-S, Xscale v5TEJ ARM926EJ-S v6 ARM1136JF-S v7 Cortex A, M, R T :Thumb (ARM을 16bit로 자주 사용하는 명령어만 압축한 형태)D: Debug Port(JTAG)M : 8비트 곱셈기I : Break Point나 Watch Point 설정 가능, 'D'와 같이 사용-E : DSP 연산 명령어 추가 (연산을 빠르게 처리)-S : VHDL, Verilog로 회로도가 제공-J : Java ..
보호되어 있는 글입니다.
보호되어 있는 글입니다.
보호되어 있는 글입니다.
보호되어 있는 글입니다.
Heap Chunk Struct1234567891011struct malloc_chunk { INTERNAL_SIZE_T prev_size; /* Size of previous chunk (if free). */ INTERNAL_SIZE_T size; /* Size in bytes, including overhead. */ struct malloc_chunk* fd; /* double links -- used only if free. */ struct malloc_chunk* bk; /* Only used for large blocks: pointer to next larger size. */ struct malloc_chunk* fd_nextsize; /* double links -- used only..
int* pptr2 부분이 올바른 표현 방법이다. 포인터를 사용해서 넣을 경우 위와 같은 형식으로 어셈블리어가 구성된다. *ptr : ptr 변수 내부의 값이 가리키고 있는 값(즉, 변수 c의 값)ptr : ptr 변수 내부의 값(즉, 변수 c의 주소)&ptr : ptr 변수의 주소 값 int* pptr1 = *ptrmov eax, dword ptr [ptr] => 먼저 ptr 이 가리키는 값을 구하려면 일단 ptr 변수 내부의 값부터 알아야 한다. ebp를 기준으로 ptr 변수의 주소를 확인한 후 값을 구한다.mov ecx, dword ptr [eax] => ptr은 포인터이기 때문에 주소 값을 가지고 있다. 그리고 우리가 원하는 값은 주소 내부에 있기 때문에 eax에 저장된 주소를 기준으로 가져온다...
#--------------------------------------------------- Windows의 특권 레벨 ---------------------------------------------------------# Windows에서는 0~3까지의 특권레벨이 있다. 0은 커널, 1과 2는 디바이스 드라이버 레벨, 3은 유저 레벨을 나타낸다. 하지만 실제로 사용하는 특권레벨은 0과 3 정도이고 1과 2는 본 적이 없다. 세그먼트 레지스터를 갱신할 때는 특권레벨에 대해 조건을 만족해야만 한다. 특정 특권레벨을 가지고 수행되는 코드가 다른 데이터 세그먼트의 메모리를 참조하기 위해서는 그 데이터 세그먼트의 DPL이 현재 실행중인 CPL보다 수치적으로 크거나 같아야 참조할 수 있다.데이터 세그먼트 갱신..