라벨이 컴퓨터구조인 게시물 표시

[메모리] 스택 push와 pop 알아보기

이미지
[메모리] 스택 push와 pop 알아보기 push and pop push와 pop은 스택을 다루는 자료구조를 이루는 두 개의 관리 함수이다. 어셈블리 언어에서는 함수의 파라미터를 메모리에 저장해 두거나 연산 후에 반환할 값을 메모리에서 빼내는 작업을 push와 pop이라고 한다. 이 때의 메모리 영역을 스택이라고 한다. push와 pop은 각각 한 줄의 명령어로 사용되는 데 실제로 어떤 역할을 하는지 알아볼 거다!! push push % rax push는 %rax에 있는 값을 스택에 넣는 것을 약속한 명령어이다. %rax레지스터에 저장된 값을 스택에 넣는 명령어이다. 간단한 명령어로 바꾸어 표현하면 다음과 같다. subq $8 % rsp movq % rax ( % rsp ) pop pop 어셈블리 언어는 함수에서 값을 리턴하기 전에 항상 %rax에 값을 넣어주는 것을 약속으로 한다. 따라서 pop 명령어는 스택에 있는 값을 빼내어 %rax 레지스터 저장하는 역할을 한다. pop 명령어는 간단한 명령어로 다시 표현하면 다음과 같다. movq ( % rsp ) % rax addq $8 % rsp 위에 코드를 다시 보면 스택을 가르키는 %rsp레지스터 값만 바꿔주고 빼낸 값을 메모리에서 지우지 않는 게 보인다. 그 이유는 메모리는 계속해서 값을 쓰기 때문에 스택의 top을 가르키는 %rsp만 관리해주면 굳이 값을 지울 필요가 없다.

[컴퓨터 구조] 문자 및 정수, 부동 소수점 인코딩

이미지
컴퓨터는 단지 숫자다 :: 1.문자 및 정수, 부동 소수점 인코딩 컴퓨터는 단지 숫자다 영화 매트릭스에서는 매트릭스라는 가상 프로그램이 초록색 0과 1이라는 숫자의 비가 되어 화면을 흐른다. 컴퓨터를 이루는 가장 기초가 되는 게 무엇인지 차례차례 내려가보면 0과 1이라는 두 수에 도달하게 된다. 0과 1이라는 수는 어셈블리어를 만들고 cpu 로직을 만들고 운영체제와 컴파일러, 다양한 프로그래밍 언어를 만들고 생물과 무생물, 동물, 식물, 기계, 건물과 같은 상위 클래스에서 하위 클래스를 만들고 세상을 이루는 수 많은 건물, 동 식물, 기계 객체를 만들고 결국에 네오라는 객체를 만들어 매트릭스 세상에 집어 넣는다. 0과 1이라는 수가 어떻게 이렇게 끝내주는 세상을 창조할 수 있을까. 몇 백년전 처음 주판을 대신하는 전자 계산기가 나오고 나서, 앨런 튜링이 만든 커다란 계산기면서 최초의 컴퓨터가 나오고 그 이후로는 수 많은 컴퓨터 이론과 하드웨어, 소프트웨어가 은하수의 별처럼 쏟아져 나왔다. 아마 컴퓨터나 전기 공학과를 전공하지 않은 일반인이라면 전자 계산기가 생기고나서부터 이후에 어떻게 컴퓨터가 발전할 수 있었는지 잘 모를거다. 어쩌면 마법과 같은 존재가 되고 있는지도 모르겠다. 인공지능과 딥러닝이 세상에 알려지면서 사람들은 컴퓨터와 더 가까워지는데 훨씬 더 무지한 상태가 되어왔다. 컴퓨터를 구성하는 하드웨어 수준으로 내려가게 되면 전자를 담을 수 있는 하나의 작은 셀안에 얼마나 전자가 있는지가 0과 1을 결정하게 된다. 전자가 얼마나 있는지는 자연속에 존재하는 아날로그로 표현되는 연속되는 값이지만 컴퓨터는 이 값이 일정 기준을 넘으면 1로 넘지 못하면 0으로 바꾸어 간단한 값으로 바꾸어 해석한다. 이렇게 아날로그값을 디지털값인 0과 1로 바꾸는 것이 컴퓨터와 자연을 그토록 다르고 이해하기 어렵게 만든다. 비트란 0과 1 수를 담을 수 있는 공간을 1비트라고 한다. 하나의 비트는 의미가 없지만 여러 개의 비트의 나...