본문 바로가기

어셈블리2

메모리 레이아웃 메모리 레이아웃을 살펴보자 커널 os 스택 위에서부터 쌓이고, 밑에서 부터 사용한다. 공유 라이브러리 힙 동적 메모리 data 초기화 된 변수, 전역변수 text code *명령어는 cpu에 저장되어있으며, 버스를 통해 전달될수 있다. 대략적인 레이아웃은 이렇게 형성 된다. 여기서 스택에 관해 좀더 살펴보면,* 스택커널 영역을 건들면 안되기때문에 높은곳에서 부터 쌓이기 시작하고, 밑에서 부터 사용한다. 쌓이는 순서사용하는 순서 1 3 2 2 3 1 이를 보고 LIFO( 마지막에 들어온것이 먼저쓰인다.) 라고 한다. 스택은 지역변수이며, 포인터 또한 마찬가지이다. virtual memory 와 비교하여 살펴보면 예) A B C A와 B와 C의가상 메모리가 존재하고서로는 데이터를 주고받을 수 없다.이는 80.. 2019. 7. 30.
어셈블리 leave , ret 뿌시기 leave = move esp, ebp pop ebp : ebp 의 값을 esp에 저장한다. esp가 가리키고 있는 주소값에 들어있는 값을 ebp에 저장하고 , esp = esp+4를 한다. ret = pop eip jmp eip : esp가 가리키고 있는 주소값에 들어있는 값을 eip에 저장하고, esp = esp +4 한다. eip가 가리키는 주소로 간다. 어셈블리 코드를 보면서 돌아가는 과정을 스택 메모리를 그려보며 따라가면 이해하기 쉽다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 _start: push ebp mov ebp, esp sub esp, 8 mov [ebp-4], 12 lea eax, [ebp-4] mov.. 2019. 7. 28.