336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.
LEA와 MOV의 차이점
MOV는 말 그대로 데이터값을 옮겨 주는 것
(인텔 명령어셋 : 명령어 DST, SRC)
MOV REG1, REG2
REG2의 값을 REG1에 옮긴다는 뜻
MOV EAX, ECX
ECX에 있는 값을 EAX에 옮긴다.
단순하게 보면 LEA도 비슷하다.
LEA REG, MEM
MEM 주소값을 REG에 옮긴다는 뜻
LEA EAX, 1234
EAX가 1234이라는 값을 가지게 된다.
MOV EAX, 1234와 차이점을 비교하면 차이가 없다.
MOV EAX, 1234도 EAX에 1234값을 옮기기 때문이다.
하지만
LEA는 OPCODE의 ModR/M 을 이용하고
SRC의 값을 연산한 뒤 REG에 옮길 수 있다.
즉, MOV는 특정 메모리나 레지스터의 값을 옮기기만 하는 것이지
옮겨지는 값에 연산을 할 수 없다.
LEA EAX, [EBP+1000]
EBP의 값에 1000을 더한 뒤 EAX에 그 값을 넣게 된다.
즉, EBP가 2000이었으면 EAX의 값을 3000이 된다.
위와 같은 명령을 MOV로 표현을 하려면
ADD EBP, 1000
MOV EAX, EBP로 두개의 명령어로 표현해야 한다.
즉, LEA를 이용하여 좀 더 명령어를 줄일 수 있게 된다.
?? MOV EAX, [EBP+5] ???
EBP+5의 위치에 있는 값을 EAX에 넣는다.
즉, EBP가 100이었으면, LEA처럼 계산된 값인 105를 EAX에 넣는게 아니라
주소가 105번지에 있는 값을 EAX에 넣게된다.
즉, LEA만이 실행중에 계산된값을 넣을 수 있다.
'Analysis > Assembly' 카테고리의 다른 글
VS2010 YASM설치 (0) | 2016.07.26 |
---|