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 ··· 10 11 12 13 14 다음