20140724 (ASM mov, xchg)
109일차
--------------
Assembly
--------------
------- []의미
------- mov 명령어
mov 명령어의 operand에 오는 속성과 정보들이다.
--- 경우 1. operand에 Reg, 상수
prefix byte를 실제로 확인.
--- 경우 2. operand에 Mem, 상수
--- 경우 3. 추가적으로...
------- 문법
mov buf , number
C로 표현하면
=> buf = number;
그런데 위에 mov 옵션을 보면
메모리에서 메모리로 옴겨지는 경우는 없다.
그래서 mov buf , number
이 문법은 틀렸다.
맞는 어셈블리로 짜려면
mov eax , number
mov buf , eax
이렇게 짜야한다.
또,
또,
그래서 INVOKE를 넣어줘야 한다.
(다른 방법이 있다고 하는데 아직 초보 수준에서는 이 정도만...)
------- xchg
C로
buf = number1;
number1 = number2;
number2 = buf;
이런 swap 하는 명령인데
어셈블리로 바꾸면
mov eax , number1
mov ebx , number2
mov ecx , eax
mov eax , ebx
mov ebx , ecx
mov number1 , eax
mov number2 , ebx
이렇게 한다.
중간에 swap을 더 빨리 해 주는 명령어가 xchg 이다.
mov eax , number1
mov ebx , number2
xchg eax , ebx
mov number1 , eax
mov number2 , ebx
이러면 끝.
용량과 속도도 더 빠르다.
--- xchg operand 정보