2024/09/30 5

[크래프톤 정글] hello.s 의 어셈블리 의 구조

예시: hello.c 파일#include int main() { printf("Hello, World!\n"); return 0;}이 프로그램을 컴파일한 후, 어셈블리 코드로 변환하면 (gcc -S hello.c -o hello.s), hello.s 파일에는 다음과 같은 어셈블리 명령어가 생성된다.hello.s 파일 예시 (x86-64 아키텍처 기반): .section .rodata.LC0: .string "Hello, World!" .text .globl main .type main, @functionmain: pushq %rbp movq %rsp, %rbp leaq .LC0(%rip), %rdi call ..

[크래프톤 정글 ] hello.c의 실행 과정

hello.c를 실행할 때 호출되는 시스템 호출(system call)과 어셈블리 파일의 내부 구조에 대해 자세히 알아보자.전처리 및 컴파일1. 소스 코드 작성 및 컴파일C 소스 코드 작성: hello.c 파일에 "Hello, World!"를 출력하는 코드가 작성된다.컴파일: 소스 코드는 컴파일러에 의해 어셈블리 코드로 변환된다. 이 과정에서 다음과 같은 어셈블리 코드가 생성된다:leaq .LC0(%rip), %rdi ; 문자열 "Hello, World!"의 주소를 레지스터 %rdi에 저장call printf ; printf 함수 호출이 어셈블리 코드는 고수준의 printf 호출이 저수준의 명령어로 변환된 결과다.2. 라이브러리 함수 호출라이브러리 함수 준비: 컴파..

[크래프톤 정글] cpu 레지스터

레지스터는 CPU 내부에서 매우 빠른 속도로 데이터를 저장하고 처리하는 작은 크기의 메모리 공간이다.  x86-64 아키텍처에서는 다양한 범용 및 특수 목적 레지스터가 존재하는데 ,  각각의 레지스터는 특정 용도나 연산에 최적화되어 있다.1. 범용 레지스터 (General Purpose Registers)범용 레지스터는 다양한 목적에 사용될 수 있으며, 기본적인 데이터 처리나 주소 계산 등에 활용된다. x86-64 아키텍처에서는 레지스터가 64비트 크기로 확장되었다.64비트32비트16비트8비트 상위8비트 하위설명RAXEAXAXAHAL주로 연산 결과를 저장하는 레지스터RBXEBXBXBHBL범용 레지스터로 임의의 데이터를 저장RCXECXCXCHCL루프 카운터로 자주 사용됨RDXEDXDXDHDL입출력 작업이나..

[크래프톤 정글 ] 동적 계획법(dynamic programming)

동적 계획법(DP)는 하나의 알고리즘이라기보다는 문제를 해결하기 위한 방법론에 가깝다. 이는 문제를 작은 하위 문제들로 나누고, 그 결과를 재사용하여 최적화하는 방식이다. 동적 계획법은 문제마다 각기 다른 점화식을 세우고, 그에 맞는 알고리즘을 스스로 만들어가야 하기 때문에, 처음에는 이 방법을 쉽게 떠올리기 어려울 수 있다.그래서, 동적 계획법의 흐름을 따라가며 개념을 이해하는 방법을 예시를 통해 정리해보고자 한다. https://developsvai5096.tistory.com/76 위의 포스트 또한 dp를 통해 점화식을 구하는 내용이 자세히 정리 되어있다. 같이 보면 도움이 되지 싶다.1. Reduction & Recursion (문제를 작은 문제로 나누기)동적 계획법은 큰 문제를 작은 문제로 나누..

[크래프톤 정글] 백준 12865번 평범한 배낭 문제

배낭 문제 는 동적 계획법(DP) 문제의 대표적인 예로, 주어진 아이템을 배낭에 담아 최대 가치를 구하는 문제다. 이걸 이하는데 시간이 매우 오래 걸렸지만 아직도 dp의 접근 방식과 , 점화식을 세우는건 좀 부족하다. 그래도 이해 한 만큼 에 대해서는 정리를 해보고자 한다. 1. 문제 정의주어진 무게 제한 k가 있는 배낭에 n개의 아이템을 넣으려고 한다.각 아이템 i는 무게 v[i]와 가치 w[i]를 가지고 있다.목표는, 무게 제한을 넘지 않으면서 배낭에 담을 수 있는 아이템들의 가치 합을 최대화하는 것이다.2. 문제의 특징각 아이템은 한 번만 선택할 수 있다. 즉, 선택하거나 선택하지 않는 두 가지 선택지뿐이다. (0/1 문제)선택을 할 때, 배낭의 용량을 넘지 않도록 해야 한다.목표는 최대 가치를 얻..