C3 [Algorithm] MergeSort Algorithm MergeSort 시간 복잡도 : ( N * Log N ) 간단 설명 : 일단 정렬을 할 배열을 하나하나 다 쪼갠다 밑에 그림 참고!! 이렇게 잘린 배열로 뭘 하면 될까? 우리는 저렇게 잘린 배열을 하나하나 붙여 가며 정렬할 것이다 말로 하면 어려우니 밑에 그림을 보도록 하자! #include int sorted[10]; void merge(int a[], int s, int middle, int e){ int i = s; int j = middle + 1; int k = s; while(i 2022. 9. 25. [Assembly] Hello world 출력 Assembly Hello World section .data msg db "hello world"; data 영역에 msg라는 포인터 변수가 Hello world의 주소를 갖는다 section .text global_start; text영역에 start함수 정의 _start: mov rax, 1; rax에 1입력 (System Call Write) mov rdi, 1; rdi에 1입력 (unsigned int fd) mov rsi, msg; rsi에 데이터 영역에 있는 포인터 변수 msg입력 (const char *buf) mov rdx, 12; mov rdx, 12 (문자열의 글자 수) syscall; System Call (sys_write) mov rax, 60; rax에 60입력 (System .. 2022. 9. 18. [Linux] 리눅스의 메모리 구조 (1) 리눅스의 메모리 구조 Linux의 메모리 구조에는 Code 세그먼트, Data 세그먼트, BSS 세그먼트, Heap 세그먼트, Stack 세그먼트 이렇게 5가지의 세그먼트가 있다. 각 세그먼트마다 읽기, 쓰기, 실행에 대한 권한이 부여되어 있어 취약점을 어느 정도 방지할 수 있다. Code 세그먼트 Text 세그먼트라고도 불리며, 프로그램에서 실행 가능한 코드가 Text 세그먼트에 위치하게 된다. 코드 세그먼트는 CPU가 코드를 읽고 실행할 수 있도록 읽기 권한과 실행 권한이 부여된다. 하지만 쓰기 권한은 부여되지 않는다 왜일까? 누군가가 악의 적으로 실행 흐름을 바꿀 수도 있기 때문에 쓰기 권한은 부여되지 않는다고 한다 Data 세그먼트 Data 세그먼트는 컴파일 할때 코드에서 초기화된 전역 변수또는 .. 2022. 9. 18. 이전 1 다음