티스토리 뷰

Programming/x86 assem

cmpxchg

Oth 2017. 7. 25. 15:26

비교와 동시에 바꾸는 명령어이다. 멀티 스레드로 인한 문제점을 해결하기 위해 사용한다.


lock cmpxchg 라는 형식으로 사용하면 해당 인스트럭션이 실행되는 동안 다른 스레드는 해당 명령어에 접근할 수 없다.


기능1

AL, AX 또는 EAX 레지스터를 DESTINATION과 비교해서 같으면 SOURCE를 DESTIONATION에 집어넣습니다.


예제


eax 값은 69 입니다.


EBP 지점은 69 그리고 DL SOURCE에 해당하는 부분은 69입니다.


위의 상황을 정리하면 AL 그리고 DESTINATION이 같습니다. 그리고 이럴 때는 SOURCE 값이 DESTINATION에 들어가게 됩니다.


즉 69 -> 70이 될 것 입니다.




정상적으로 70으로 변경된 것을 확인할 수 있습니다.


기능2

만약 AL과 DESTINATION이 다르다면 DESTIONATION 값이 AL, AX, EAX 값으로 들어가게됩니다.


                                            

'Programming > x86 assem' 카테고리의 다른 글

assem <-> C  (0) 2017.10.12
x86 assem  (0) 2017.10.12
[assembly] cmp  (0) 2016.11.08
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함