Computer Science/System Programing

    [시스템 프로그래밍] BombLab 실습 메모장

    Why make trillions when we could make... billions? 0 1 1 2 3 5 정수 문자 한 개 정수 입력받기 과제 He is evil and fits easily into most overhead storage bins. 1 2 4 7 11 16 scanf("%d %d",a,b) func4(a, 0 , 14); int func4(int edi, int esi, int edx){ Dump of assembler code for function func4: 0x0000000000001406 : push rbx 0x0000000000001407 : mov eax,edx 0x0000000000001409 : sub eax,esi 0x000000000000140b : mov e..

    [시스템 프로그래밍] 실수의 표현 및 처리

    🤔 실수의 표현 및 처리 이전 포스팅에서는 정수의 표현 및 처리에 대해 공부했습니다. 이번에는 실수의 표현 및 처리에 대해 학습하겠습니다. 2진소수 , 인코딩, 정규화 등에 대해 배워보겠습니다. 🔎 2진 소수 이진 소수의 각 자리를 $a_k$라고 했을 때 아래와 같이 나타낼 수 있습니다. $$b_ib_{i-1} ... b_2b_1b_0.b_{-1}b_{-2} ... b_{-j}$$ 분수로 나타내어진 수를 2진 소수로 표시할 때 해당 분수의 분모가 2의 거듭제곱꼴로 나타난 경우 쉽게 이진 소수로 표시 할 수 있습니다. $$5와 3/4 = 101.11_2$$ $$63/64 = 0.111111_2$$ 하지만 모든 분수의 분모가 2의 거듭제곱꼴이 아니기 때문에 우리는 ɛ 기호를 통해 해당 값을 나타냅니다. 예를..

    [시스템 프로그래밍] 정수의 표현 방법

    🤔 정수의 표현 방법 컴퓨터에서는 정수를 어떤 방법으로 표현하는지 알아보도록 하겠습니다. 크게 부호가 없는 정수, BCD코드, 부호를 갖는 정수를 주로 알아보겠습니다. 결론부터 말하자면 컴퓨터는 2의 보수를 통해 부호형 정수를 표시하기로 정했습니다. 비부호형 수에서 2의 보수형 정수로 변환하는 것입니다. 쉽게말해 비트를 모두 뒤집고 1을 더하면 됩니다. 아래에서 조금 더 자세하게 알아보겠습니다. 🔎 정수의 인코딩 비부호형 정수와 부호형 정수는 간단하게 수식으로 나타낼 수 있습니다. 비부호형 정수는 $B2U(X)$라고도 하는데 아래와 같이 나타낼 수 있습니다. 부호형 정수(2의 보수)는 아래와 같이 나타낼 수 있습니다. 이를 통해 길이가 W비트인 정수의 표현 가능한 범위를 추측해볼 수 있습니다. 비부호형 ..

    [시스템 프로그래밍] 정수의 표현

    🤔 정수의 표현 컴퓨터 내부(메모리, 레지스터)에 데이터가 표현되는 방식에 대해 알아보도록 하겠습니다. 바이트 저장 순서(Byte Ordering), 프로그램 소스코드, 프로그램 실행 코드, 정수의 타입변환 캐스팅, 정수의 연산 등을 중심으로 알아보겠습니다. 🔎 컴퓨터의 워드 길이 컴퓨터의 워드 길이 즉 Word Size는 정수 값의 크기를 말합니다. 또한 이는 주소의 길이가 되기도 합니다. 대부분 요즘 컴퓨터는 64bit(8byte) 워드로 이뤄집니다. 32bit 컴퓨터는 주소 범위가 4GB로 제한되기 때문에 메모리가 많이 필요한 프로그램에서는 제약이 될 수 있습니다. $2^10 = 1024 = 1K$ $2^20 = 1024 * 1K = 1M$ $2^30 = 1024 * 1M = 1G$ $2^32 = ..

    [시스템 프로그래밍] 컴퓨터 시스템(컴퓨터 구조)

    🤔 Computer System 시스템이란 하나의 공통적인 목적을 수행하기 위해 조직화된 요소들의 집합체라고 정의할 수 있습니다. 컴퓨터 시스템은 조직이나 계획 그 자체로 묘사되기도 하고. 컴퓨터 시스템 내의 일부분으로 묘사되기도 합니다. 컴퓨터 시스템은 어떠한 작업을 잘 수행하기 위해 주의 깊게 선정된 부속품들인 하드웨어와, 그 컴퓨터에서 작동하는 소프트웨어 또는 프로그램으로 구성됩니다. 소프트웨어에서 가장 주된 구성요소는 운영체계이며, 컴퓨터에서 실행되는 다른 프로그램들에게 여러가지 서비스를 제공하고 관리하는 기능을 합니다 이전 글에 이어서 컴퓨터의 구조를 통해 프로그램의 실행이 어떤 방식으로 일어나는 가를 중점적으로 다뤄보겠습니다. 🔎 변환된 프로그램의 실행 hello.c라는 소스 파일을 성공적으로..