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 정보








설정

트랙백

댓글