전체 글 117

Assembly

개요지난 시간 우리는 아키텍쳐에 대해서 배운바가 있다.오늘은 고수준의 언어에서 기계어로 가기위한 중간 단계인 assembly에 대해서 알아보도록 하자.아키텍쳐프로세서에서 사용한 명령어 집합 구조들을 통칭하는 말로, 아키텍쳐에 따라 레지스터와 명령어(Assembly)가 나뉜다.x86을 예를 들어 보자면 32bit / 64bit는 컴퓨터가 한번에 처리할 수 있는 단위를 말한다.이를 우리는 1WORD라 정의한다.레지스터CPU의 기억장치로 명령을 처리하는데 필요한 데이터를 일시적으로 저장한다.크기는 작지만 기억장치 중에 속도가 가장 빠르다.종류범용레지스터산술 연산 레지스터인덱스 레지스터포인터 레지스터세그먼트 레지스터플래그 레지스터범용레지스터이름주 용도RAX함수의 반환값RBX메모리 주소RCX반복문의 반복 및 각종..

[3주차 TIL] KnockOn Bootcamp Pre.Rev : 포켓몬 게임 제작 Project

개요이 프로젝트는 2~3주차 동안 이루어진 포켓몬 게임 제작 프로젝트이다.요구사항각 기능과 구조체는 헤더파일을 이용해 구현해야 함.구조체는 꼭 malloc을 이용해 동적 heap메모리로 사용하여야 함. 구조체 멤버는 상관 X리눅스 환경 gcc컴파일러를 통해서 컴파일 및 실행이 되어야 함추가 점수는 자료구조를 이용할 경우 부여함.구성pokemon.txt : 포켓몬 리스트가 들어가 있는 파일pokemon.h : 포켓몬 게임을 위한 함수가 들어간 헤더파일pokemon.c : main.csave.txt : 게임 중간에 저장시 발생하는 파일pokemon.txt//pokemon.txt12파이리 불 60 80꼬부기 물 40 120이상해씨 풀 50 100브케인 불 50 90라이코 물 40 120치코리타 풀 50 100..

STUDY 2024.12.22

[3주차 TIL] KnockOn Bootcamp Pre.Rev : ELF 파일 구조

개요리눅스 기반 OS의 기본 바이너리 파일은 ELF(Executable and Linkable Format) 형식이다.ELF 파일이 어떻게 구성되어 있는지, 어떻게 매핑되고 실행될 수 있는지 알아보자이 포스트는 검색과 실습으로 제작되었다.구조ELF 파일 구조는 ELF 헤더영역, ELF 프로그램 헤더 테이블, ELF 섹션 영역, ELF 섹션 헤더 테이블로 구성된다.Segment : 동일한 메모리 속성(read-only, writeable 등)을 가진 하나 또는 그 이상의 섹션의 집합Section : 특정 정보(machine instructions, symbol table 등)를 포함하고 있는 ELF file의 작은 조각Symbol : ELF 파일 내 저장된 함수 또는 변수의 설명으로, 간단한 함수 또는 변..

STUDY 2024.12.22

[3주차 TIL] KnockOn Bootcamp Pre.Rev : 메모리 구조와 매핑

개요실행 파일은 로더에 의해 RAM에 로드 된 이후 CPU가 읽어 실행된다고 이전에 블로그에 올렸다.RAM에 올려진 실행파일은 과연 어떤 구조일지 알아봤다.메모리 구조섹션코드(Code)섹션 (.text 섹션)프로그램의 실행 코드가 저장되는 영역용도함수, 명령어와 같은 실행 가능한 코드가 위치Read-Only로 설정되어 코드 수정이 방지특징여러 프로세스가 동일한 프로그램 실행 시 코드섹션 영역을 공유프로그램의 컴파일된 기계어 코드가 저장되어 있는 영역권한(R-X)R(read) : CPU가 코드를 읽어 실행해야 하므로 허용X(execution) : 명령어 실행을 위해 허용데이터(DATA) 섹션전역 변수 및 정적 변수들이 저장되는 영역용도초기화된 전역 / 정적 변수가 저장됨.특징읽기/쓰기가 가능데이터 크기가 ..

STUDY 2024.12.21

[3주차 TIL] KnockOn Bootcamp Pre.Rev : 링커와 로더

개요이번에는 프로그램이 실행되는 과정의 첫번째인 링커와 로더에 대해 공부했다.링커여러개의 Object File과 라이브러리를 연결하여 하나의 실행파일을 완성하는 프로그램컴파일러가 소스코드를 컴파일하면, 생성되는 개별적인 목적파일들이 링커를 통해 결합됨.정적링킹특징필요한 라이브러리 코드를 실행파일에 직접 포함실행 시 추가적인 라이브러리를 필요로 하지 않음.장점실행파일이 독립적이며, 배포가 간단라이브러리를 찾지 않아도 되서 실행 속도가 빠름단점라이브러리를 통째로 합쳐야해서 실행파일 크기가 커짐라이브러리가 업데이트 되어도 Object File에 포함시켜서 새 실행파일을 만들어야함동적링킹특징실행파일에 라이브러리 코드를 포함하지 않고 실행 시 필요할 때 동적으로 로드할 수 있음동적라이브러리 파일이 필요하다.Win..

STUDY 2024.12.21

[3주차 TIL] KnockOn Bootcamp Pre.Rev : 컴파일러

개요이번에는 컴파일러가 컴파일을 진행하는 과정을 공부해봤다.컴파일러C, python, Java 등 인간이 읽고 이해하고, 쓸 수 있는 언어로 만들어진 프로그래밍 언어인 고수준 프로그래밍 언어를 컴퓨터가 읽고 실행할 수 있는 저수준언어(기계어)로 변환하는 프로그램이다.컴파일러는 코드 변환과정에서 오류를 검출하고, 최적화를 수행해 성능을 개선하는 역할도 한다.기능컴파일러의 주요 기능으로는 코드변환, 오류검출, 최적화가 있다.코드변환 : 사람이 이해하기 쉬운 고수준 언어를 컴퓨터가 이해할 수 있는 기계어로 변환오류검출 : 문법, 데이터 타입, 범위 등과 관련된 오류를 확인최적화 : 실행 성능을 높이거나 메모리 사용량을 줄이는 방식으로 코드 개선컴파일 과정컴파일은 크게 전처리, 컴파일, 어셈블, 링킹의 4단계로..

STUDY 2024.12.21

[3주차 TIL] KnockOn Bootcamp Pre.Rev : 아키텍쳐

개요아키텍쳐를 본격적으로 공부하기 이전에 컴퓨터는 어떻게 발전되어 왔는지 알아보자.폰 노이만의 컴퓨터 구조를 고안해내기 이전에는 애니악(ENIAC, Electronic Numerical Integrator and Computer)이라는 컴퓨터가 운용되어 있었는데, 이 애니악은 프로그램 외장 방식으로 동작되어왔다.천공 카드라는 것을 통해 데이터를 입력하고, 결과를 출력했는데, 천공카드란 OMR 마킹지와 비슷하게 생긴 카드에 구멍을 뚫어 디지털 자료를 기록하는 저장매체이다.수정소요가 있으면, 종이 테이프로 천공 카드의 구멍을 메웠던 것을 패치(Patch)라 하고, 이는 오늘날 우리가 프로그램 수정하는 것을 뜻하는 말인 패치의 유래이다.버그는 실제로 벌레가 들어가서 프로그램 오류가 나는 것이라고...폰 노이만..

STUDY 2024.12.21

[2주차 TIL] KnockOn Bootcamp Pre.Rev : 탐색 알고리즘

탐색 알고리즘탐색알고리즘이란 데이터 구조에서 특정요소를 찾거나, 조건에 맞는 요소를 검색하기 위해 사용되는 알고리즘이다.순차탐색데이터를 처음부터, 끝까지 하나씩 비교하며, 찾는 방법으로 데이터가 정렬되지 않았거나, 크기가 작을 때 유용하다.시간 복잡도최선 : O(1) (첫번째 요소가 찾고자 하는 데이터일경우)최악 : O(n) (찾고자 하는 데이터가 맨 마지막에 있어 모든 요소를 한번씩 확인해야 하는 경우)이진탐색정렬된 데이터에서 중간 값을 기준으로 검색 범위를 반씩 줄여가며, 탐색하는 것으로 데이터가 정렬되어 있을 때, 빠르게 작동한다.시간 복잡도 : O(log n)Hashing데이터를 해시 테이블에 저장하고, 키를 기반으로 직접 접근하는 것으로, 빠른 탐색이 필요한 경우 사용시간 복잡도최선 : O(1)..

STUDY 2024.12.15

[2주차 TIL] KnockOn Bootcamp Pre.Rev : 정렬 알고리즘

정렬 알고리즘버블 정렬배열의 처음부터 시작하여 인접한 두 요소를 비교두 요소가 정렬이 안되어 있다면, 서로 교환배열의 끝까지 한번 비교와 교환과정을 수행하면 가장 큰 값이 배열의 끝에 위치이 과정을 배열의 크기만큼 반복하여 정렬을 완성선택정렬배열의 첫번째 요소를 기준으로 나머지 요소들과 비교하여 가장 작은 값을 찾음가장 값이 작은 것과 첫번째 요소를 교환첫번째 요소를 제외한 나머지 배열에 대해 위 과정을 반복정렬이 완료될 때까지 이를 반복삽입정렬배열에서 두번째 요소부터 시작하여, 현재 요소를 기준으로 앞쪽에 있는 정렬된 부분과 비교현재 요소가 정렬된 부분의 요소들보다 작다면, 알맞은 위치에 삽입이 과정을 배열의 끝까지 반복하여 정렬을 완성정리구분설명장점버블정렬최악 : O(n^2)최선 : O(n)구현이 간..

STUDY 2024.12.14