Time Flies
2014년 6월 22일 일요일
어셈블리어 구성
인텔 방식의 특징으론 %, $이 없으며, 동작 방식은 제 2 오퍼랜드에서 제1 오퍼랜드로 동작한다.
OPCODE | 제 1 오퍼런드 | 제 2 오퍼런드 |
어셈블리 명령어로는
MOV : 데이터 이동시에 사용된다.
LEA : 주소값을 옮길 때 사용된다.
ADD : 레지스터나 메모리의 값을 덧셈할때 사용
SUB : 레지스터나 메모리의 값을 뺄 때 사용
INC : 값을 1 증가시킨다.
DEC : 값을 1 감소시킨다.
CMP : 레지스터와 레지스터 값을 비교한다.
JMP : 특정한 곳으로 분기한다.
CALL : 프로시저를 호출
RET : 호출했던 바로 다음 지점으로 이동한다.
PUSH : 값을 스택에 저장한다.
POP : 값을 스택에서 삭제한다.
데이터 이동: MOV, LEA
논리, 연산 : ADD, SUB, INC, DEC
ex) add eax, ebx; sub eax, ebx, inc eax, dec eax
흐름제어: CMP, JMP
프로시저 : CALL, RET
스택조작: PUSH, POP
exe 빌드 과정
Static Link library
compile Import libarary -------------
Code -------------------->Source.obj --------------------------- | a [pe헤더] |
| b [obj코드] |
| c [ Footer] |
--------------
코드를 짜고 exe로 만들어지는 과정이다.
코드가 obj화 된 후 첫번째로 PE헤더가 만들어 지게 된다.
PE헤더에는 Winnt.h란 헤더파일에 선언 되어 있다.
a. PE헤더
b. 실제 코드
c. 빈공간
첨부: PE 포멧 레이아웃
피드 구독하기:
덧글 (Atom)