Reversing&Write up/Study

[HandRay] if문 패턴, switch-case문 패턴

Jubil 2018. 1. 14. 00:54
반응형

if:


==일 때, cmp로 비교.

JNZ로 거짓일 때 점프.


!=일 때, cmp로 비교.

JE로 거짓일 때 점프.



부호 있을 때:


>일 때, cmp로 비교.

JLE로 거짓일 때 점프.


<일 때, cmp로 비교.

JGE로 거짓일 때 점프.


>=일 때, cmp로 비교.

JL로 거짓일 때 점프.


<=일 때, cmp로 비교.

JG로 거짓일 때 점프.


부호 없을 때:


>일 때, cmp로 비교.

JBE로 거짓일 때 점프.


<일 때, cmp로 비교.

JAE로 거짓일 때 점프.


>=일 때, cmp로 비교.

JB로 거짓일 때 점프.


<=일 때, cmp로 비교.

JA로 거짓일 때 점프.





if - else:

if가 참일 때, if 종속 명령을 실행하고 jmp로 else 부분을 뛰어 넘음.


else일 때, else로 바로 점프.




if - else if - else:

if가 참일 때, if 종속 명령을 실행하고, jmp로 else if, else 부분을 뛰어 넘음.


if가 거짓일 때, else if의 cmp 명령으로 점프. 참이면 종속 명령 실행 후 jmp로 else 부분을 뛰어 넘음.


마지막 else if가 거짓일 때, else로 점프.




switch - case:


종속 명령이 비교문 바로 아래에 있지 않고, 비교를 먼저 한 후에 조건이 맞으면 밑에 있는 종속 명령으로 점프.


조건에 맞지 않으면 jmp로 switch - case문을 뛰어 넘음.


break가 있으면 각 조건의 종속 명령들 아래에 switch - case문을 뛰어 넘는 jmp 명령이 있음.


default가 있으면 비교의 조건이 맞지 않을 때, jmp 명령이 switch - case문을 뛰어 넘지 않고, default 종속 명령으로 점프함.

반응형