.

002. 틀

by 담배맛구마

[출처] http://crystalcube.co.kr/15



1. 기본적인 틀에 대한 설명


.386

딱 이름에서 느낌이 오듯이 Operation Set 지정하는 듯(386 / 486 / 586 등이 있겠고 뒤에 p 붙이면 뭐 특별하다는데??)


.MODEL Flat, STDCALL

.MODEL은 해당 프로그램의 메모리 모델이라네

Win32에서는 FLAT이라는 모델만 있대

STDCALL하면 예전에 CDECL도 기억나는데 어떻게 파라미터를 전달하느냐? 인듯

C방식이랑 PASCAL방식이랑 STDCALL방식이 있대

C방식이 CDECL방식인가?


일단 아래의 .DATA, .DATA?, .CONST, .CODE 하나 하나를 Section이라고 한대

.DATA

초기화된 값들을 쳐 넣어


.DATA? 

초기화 되지 않은 값들을 쳐 넣어

여기 있는 값들은 실행파일 자체에 포함되지 않는대 메모리에 로드 될때 이거 만큼 더 필요하다라고 알려준대


.CONST 

여기다가는 상수값 쳐 넣어


.CODE 

start: ← 콜론 빠지면 에러뜨든거 같던데

여기닥 코드 넣어

end start



2. 함수 프로토타입


함수 프로토타입 형식

FunctionName PROTO [ParameterName]:DataType,[ParameterName]:DataType,...

예) ExitProcess proto uExitCode:DWORD


함수 프로토타입을 쓰면, invoke(High-Level Call)을 쓰는데 유리하대

기존의 함수 호출 방식인 call은 스택에 인자가 잘 들어가게 짜져있는지, 어셈블러/링커가 확인 못한대

invoke는 call할 함수가 받아야할 인자의 갯수, 데이터크기 만큼 psuh되어 있는지 검사를 해준대


invoke 문법

INVOKE  expression [,arguments]

예) INVOKE ExitProcess, 0













반응형

블로그의 정보

정윤상이다.

담배맛구마

활동하기