컴퓨터 시스템 : CSAPP 3장 정리 - 3.4 장 정보 접근하기 Part.2
·
크래프톤 정글 (컴퓨터 시스템: CSAPP)/3장 프로그램의 기계수준 표현
3.4.1 "오퍼랜드 지정자(Operand Specifiers)"🧠 오퍼랜드란?오퍼랜드(Operand)는 명령어에서 사용되는 값예를 들어, 계산기에서 3 + 5라면+는 연산자 (operator),3과 5는 오퍼랜드어셈블리에서도 똑같다mov %rax, %rbx여기서 %rax와 %rbx는 오퍼랜드야.→ “rax에 있는 값을 rbx로 복사해 줘!”🔧 오퍼랜드의 종류컴퓨터는 다양한 종류의 값을 계산에 쓸 수 있어! 대표적으로 3가지이다:종류예시설명즉시 값 (Immediate)$10, $0x20그냥 숫자 자체!레지스터 (Register)%rax, %rbx빠른 기억상자메모리 (Memory)(%rax), 8(%rbx)주소를 따라가서 값을 가져와요🧮 메모리 주소 지정 (주소 계산 방법들)컴퓨터는 주소를 숫자로 계..
컴퓨터 시스템 : CSAPP 3장 정리 - 3.4 장 정보 접근하기 Part.1
·
크래프톤 정글 (컴퓨터 시스템: CSAPP)/3장 프로그램의 기계수준 표현
3.4장 "정보 접근하기 (Accessing Information)" 부분 전체를 살펴보겠다. 이 장은 컴퓨터가 값(정보)을 어디서, 어떻게 꺼내 쓰고 저장하는지 알려주는 아주 중요한 부분이다 😊🎯 3.4장 핵심 주제:컴퓨터가 값을 꺼내고 저장하는 방법을 배운다.🧠 왜 이게 중요할까?컴퓨터는 모든 걸 메모리에 저장하고 꺼내서 사용한다.어셈블리어에서는 "정보를 어디서 꺼내서, 어디에 놓을지"를 직접 알려줘야 한다📦 1. 컴퓨터에는 저장 공간이 3가지가 있다.종류예설명레지스터%rax, %rbx빠른 임시 상자!메모리(%rax)느리지만 큰 저장소즉시값$10, $0x40그냥 숫자 자체🧩 2. 레지스터란?레지스터는 컴퓨터 안에 있는 아주 빠른 기억 상자다.예를 들어:mov $10, %rax→ rax라는 상..
컴퓨터 시스템 : CSAPP 3장 정리 - 3.2장 프로그램의 인코딩 Part. 2
·
크래프톤 정글 (컴퓨터 시스템: CSAPP)/3장 프로그램의 기계수준 표현
🧪 3.2.2 Code Examples — 코드 예제💡 C 코드로 함수 만들기먼저 아래와 같은 C 코드를 가정해 보자. 파일 이름은 mstore.c라고 한다.long mult2(long, long);void multstore(long x, long y, long *dest) { long t = mult2(x, y); *dest = t;}이 함수는 x와 y를 mult2 함수에 넘겨서 곱한 결과를 dest가 가리키는 곳에 저장한다.🛠️ 어셈블리 코드로 보기이 C 코드를 어셈블리로 바꾸려면 이렇게 명령어를 입력한다:gcc -Og -S mstore.cmultstore: pushq %rbx ; %rbx 저장 (함수 호출 시 보존해야 함) movq %rdx, %rbx ..
컴퓨터 시스템 : CSAPP 3장 정리 - 3.2장 프로그램의 인코딩 Part. 1
·
크래프톤 정글 (컴퓨터 시스템: CSAPP)/3장 프로그램의 기계수준 표현
🧠 핵심 질문: 우리가 만든 프로그램은 컴퓨터에게 어떻게 전달될까?우리가 C 같은 언어로 프로그램을 짜면, 그 코드는 컴퓨터가 직접 이해할 수 없다. 컴퓨터는 오직 기계어라는 아주 특별한 형태의 언어만 이해한다. 그래서 우리가 만든 코드는 컴퓨터가 이해할 수 있는 모양으로 인코딩(Encoding) 되어야 한다.이 인코딩은 기계 수준 코드(Machine-Level Code)라고 부르며, 그 과정을 거치면 컴퓨터가 그 프로그램을 메모리에 올리고, 실행할 수 있게 된다.🏗️ 컴퓨터가 프로그램을 실행할 준비를 하는 과정컴퓨터는 다음과 같은 과정으로 우리가 만든 코드를 처리한다:컴파일러가 C 코드 같은 고급 언어를 받아서 어셈블리 코드라는 저수준 언어로 바꿔준다.어셈블러가 이 어셈블리 코드를 읽어서 기계가 이..
컴퓨터 시스템 : CSAPP 3장 정리 - 3.1장 역사적 배경
·
크래프톤 정글 (컴퓨터 시스템: CSAPP)/3장 프로그램의 기계수준 표현
이 부분은 우리가 지금 사용하는 컴퓨터가 어떻게 발전해왔는지를 이야기하는 “컴퓨터 역사 이야기”라고 생각하면 된다. 🧠 쉬운 설명으로 각 CPU 살펴보기🧱 8086: 아주 기본적인 벽돌 컴퓨터8086 (1978년)→ 첫 번째 16비트 마이크로프로세서. 계산도 느리고 메모리도 작았다.→ IBM 컴퓨터에 들어가서 MS-DOS와 함께 사용되었다.계산은 느리고 단순함16비트 숫자만 다룸 (0~65,535까지만 가능)요즘 계산기보다 느릴 수 있다.🚪 80286: 문이 더 생긴 컴퓨터80286 (1982년)→ 더 많은 주소를 다룰 수 있게 되었으며. 윈도우가 돌아가던 초기 PC에 들어갔다.주소 공간을 확장했으며. 더 많은 데이터를 기억 가능했다."보호 모드" 덕분에 프로그램 충돌 방지 가능 (안전한 방)🛣️..
크래프톤 정글 8기 - 25일차 TIL (백준 9251 LCS)
·
크래프톤 정글
TIL - 2025.04.04 (금요일)📝 오늘 배운 것 (백준 9251 LCS)문제LCS(Longest Common Subsequence, 최장 공통부분 수열) 문제는 두 수열이 주어졌을 때, 모두의 부분 수열이 되는 수열 중 가장 긴 것을 찾는 문제이다.예를 들어, ACAYKP와 CAPCAK의 LCS는 ACAK가 된다.데 필요한 곱셈 연산 횟수의 최솟값을 구하는 프로그램을 작성하시오. 입력으로 주어진 행렬의 순서를 바꾸면 안 된다.입력첫째 줄과 둘째 줄에 두 문자열이 주어진다. 문자열은 알파벳 대문자로만 이루어져 있으며, 최대 1000글자로 이루어져 있다.출력첫째 줄에 입력으로 주어진 두 문자열의 LCS의 길이를 출력한다.예제 입력ACAYKPCAPCAK예제 출력4💡 문제 해결LCS 문제를 풀기 위..
크래프톤 정글 8기 - 24일차 TIL (다이나믹 프로그래밍 입문)
·
크래프톤 정글
TIL - 2025.04.03 (목요일)📝 오늘 배운 것 (동적 계획법)동적 프로그래밍 (Dynamic Programming)동적 프로그래밍은 복잡한 문제를 더 작은 하위 문제로 나누어 해결하는 알고리즘 설계 기법이다. 큰 문제를 작은 문제로 분할하여 각 하위 문제의 해를 계산하고, 이를 이용하여 상위 문제의 해를 구하는 방식으로 동작한다.기본 원리문제 분할: 복잡한 문제를 더 작은 하위 문제로 나눈다.메모이제이션(Memoization): 이미 계산한 결과를 저장하여 재사용함으로써 중복 계산을 피한다.상향식 접근법: 가장 작은 하위 문제부터 해결하여 점차 상위 문제를 해결해 나간다.동적 프로그래밍분할 정복부분 문제가 중복되어 재활용 됨부분 문제가 서로 붕복되지 않음메모이제이션 기법 사용메모이제이션 기법..
크래프톤 정글 8기 - 23일차 TIL (트라이 Trie)
·
크래프톤 정글
TIL - 2025.04.02 (수요일)📝 오늘 배운 것 (트라이 Trie)트라이(Trie)?트라이(Trie)는 문자열을 저장하고 효율적으로 탐색하기 위한 트리 형태의 자료구조이다. 주로 문자열이 키인 경우가 많으며, 문자열 특화 자료구조의 대표적인 예이다.특징이진 탐색 트리와 달리 노드 자체에 키를 저장하지 않고, 노드가 트리에서 차지하는 위치가 연관된 키를 정의한다.노드의 모든 자손은 해당 노드에 연관된 문자열의 공통 접두사를 공유한다.루트는 빈 문자열에 연관된다.각 노드는 자식 노드들에 대한 포인터를 가지고 있으며, 일반적으로 형태의 Map 구조를 사용한다.시간 복잡도트라이 생성 시간 복잡도 : O(M*L) - M은 총 문자열의 수, L은 가장 긴 문자열의 길이삽입 시간 복잡도 : O(L) - ..
크래프톤 정글 8기 - 22일차 TIL (B-Tree)
·
크래프톤 정글
TIL - 2025.04.01 (화요일)📝 오늘 배운 것 (B-Tree)B-Tree?자가 균형 트리로 이진트리를 확장하여 하나의 노드가 두 개 이상의 자식을 가질 수 있도록 설계되었다.B-Tree는 AVL 트리로 레드-블랙 트리와 더불어 skewed tree(한쪽으로 치우친 트리)를 해결할 수 있는 자료구조 중 하나이다. AVL 트리나 레드-블랙 트리를 모든 데이터가 메모리에 적재할 수 있는 경우에 적용함과 달리 B-Tree는 대용량 데이터를 다뤄야 하는 DB나 디스트에 주로 적용된다.대부분 트리에서의 연산이 높이에 따라 결정됨을 볼 때 B-Tree는 h를 줄이기 위해 B-Tree의 노드에 가능한 많은 값을 집어넣어 높이를 낮춤으로써 fat tree의 형태를 보인다. 이렇게 하나의 노드에 여러 정보를 ..
크래프톤 정글 8기 - 3주차 시작 전 회고
·
크래프톤 정글
📝 주간 학습 회고 (TWL) - 크래프톤 정글 3주 차🎯 이번 주 목표시뮬레이션 문제 풀어보기DFS/BFS 문제 풀어보기그래프 이론 공부다익스트라/벨만 포드/플루이드 워셜 문제 풀어보기📚 학습한 내용다익스트라플루이드-워셜위상 정렬amdhal의 법칙🔍 어려웠던 점 / 해결 방법어려웠던 점해결 방법다익스트라개념 이해 및 문제 풀어보기위상정렬개념 이해 및 문제 풀어보기🛠️ 만든 것 / 작업한 것❌🤔 생각 / 느낀 점각종 코테 유형을 학습하고 있지만 여전 히 응용문제나 풀이 해법이 생각하는 것이 어렵다.시뮬레이션(노가다) 문제 어렵다.다익스트라, 위상정렬, 최소 스패닝, 플루이드 워셜, 벨만 포드... 알아야 하는 게 많기도 하다.📊 주간 진행 상황목표진행 상태비고알고리즘 공부(그래프이론)70% ..