728x90 전체 글53 [포너블 기초] Docker 보호되어 있는 글 입니다. 2023. 9. 13. [포너블 기초] 스택 프레임 스택 프레임(Stack Frame)이란 함수가 호출될 때, 그 함수만의 스택 영역을 구분하기 위하여 생성되는 공간이다. 이 공간에는 함수와 관계되는 지역 변수, 매개변수가 저장되며, 함수 호출 시 할당되고, 함수가 종료될때 소멸한다. 이렇게 스택 영역에 차례대로 저장되는 함수의 호출 정보를 스택 프레임이라고 하며, 스택 프레임 덕분에 함수의 호출이 모두 끝난 뒤에, 해당 함수가 호출되기 이전 상태로 되돌아갈 수 있다. 아래에서 부터는 자주 사용하는 어셈블리어에 대해 알아보고 간단한 예제를 통해 스택 프레임에 대해 알아보겠다. 자주 사용하는 어셈블리 명령어와 사용 예시 push push eax: eax의 값을 스택에 저장한다. pop pop eax: 스택의 가장 상위에 있는 값을 꺼내서 eax에 저장한다... 2023. 9. 12. [포너블 기초] x86-32, x86-64 레지스터 IA-32 (x86-32) 레지스터 1. 범용 레지스터: 주용도는 있으나, 그 외의 다양한 용도로 사용될 수 있는 레지스터 EAX (Extended Accumulator Register) 곱셈, 나눗셈 명령에 사용한다. 함수의 리턴값을 저장한다. EBX (Extended Base Register) ESI나 EDI와 결합하여 인덱싱에 사용된다. ECX (Extended Counter Register) 반복을 사용할 때 카운터로 사용된다. EDX (Extended Data Register) EAX와 같이 사용되고 부호 확장 명령 등에 사용된다. ESI, EDI, EBP, ESP 레지스터 또한 범용 레지스터로 사용가능하다. 2. 인덱스 레지스터 ESI (Extended Source Index) 데이터 복사/조.. 2023. 9. 12. [포너블 기초] 메모리 구조 메모리 구조란? 프로그램이 실행되기 위해서는 먼저 프로그램이 메모리에 load되어야 한다. 또한, 프로그램에서 사용되는 변수들을 저장할 메모리도 필요하다. 따라서 컴퓨터의 운영체제는 프로그램의 실행을 위해 다양한 메모리 공간을 제공하고 있다. 프로그램이 실행하게 되면 OS는 아래 그림과 같이 메모리(RAM)에 공간을 할당해준다. 그리고 RAM은 크게 코드(Code), 데이터(Data), 스택(Stack), 힙(Heap) 영역으로 나뉜다. 코드(code) 영역 코드 영역은 실행할 프로그램의 코드가 저장되는 영역으로 텍스트영역이라고도 부른다. 실행할 프로그램의 코드는 프로그래머가 작성한 소스 코드이다. 실행할 코드와 매크로 상수가 컴파일된 기계어 형태로 저장된다. 중간에 코드를 바꿀 수 없게 Read-Onl.. 2023. 9. 11. [포너블 기초] 컴퓨터 구조 1. 폰 노이만 구조(Von Neumann architecture) 폰 노이만 구조는 프로그램 내장 방식이라고도 불리며, 최초의 프로그램이 내장된 컴퓨터 구조로, 현재 모든 범용 컴퓨터들이 기본 설계로 따르고 있는 구조이다. 폰 노이만 구조는 연산의 수행과 관련된 명령어와 데이터를 메모리에 보관하게 되며, 순차적으로 메모리에 저장된 내용을 가져와서 지시대로 연산을 수행하는 방식이다. 1.1 장점 이전에 하드웨어 전선을 일일이 재배치하여 작업을 수행했던 것과 달리 폰 노이만 구조에서는 소프트웨어만 교체하면 되기 때문에 편의성과 범용성이 크게향상 되었다. 1.2 단점 폰 노이만 병목 현상이라는 문제가 존재한다. 폰 노이만 병목 현상은 CPU의 처리속도와 저장장치의 속도가 다를 때 나타나는 현상으로 CPU의 .. 2023. 9. 10. 이전 1 ··· 6 7 8 9 다음