bomb lab: phase_2

2019. 8. 21. 23:56

pahse_2의 코드

<간단한 어셈블리어>

1.  add 인자1, 인자2 : 인자2를 인자1과 더해 인자 1에 넣는 명령어다. 인자 1  = 인자1+인자2

2. sub 인자1, 인자2: 인자2를 인자1에서 빼서 나온 값을 인자 1에 넣는 명령어. add와 비슷하지만 유일한 차이점이 있다. 인자1 = 인자1-인자2라는 뜻이다.

3. call: 인자를 불러오는 명령어, 말 그대로 그 위치의 함수를 실행하게 되는 것

4. cmp 인자1, 인자2: 인자 2개를 비교하는 역할을 한다. 비교 후에 아무것도 안하면 의미가 없으므로, 그 조건으로 항상 jmp 명령어가 항상 따라온다. cmp-jmp는 세트라는 뜻.

 

출처: https://csdit.tistory.com/entry/

5. xor: 피연산자의 각 비트가 xor 연산이 되는 것. 각 비트가 서로 다른 값일때만 결과가 1이 되고 같은 값이면 결과는 0이 된다. 예를들어 0과 1이면 1인데, 1과 1 0과 0이면 결과는 0이 된다는 것.

6. jns: 사인(부호) 플래그가 0일때, 양수일때 점프한다.

7. jne: 비교 결과가 다를 때 점프한다.

 

내가 생각하는 흐름>

어떤 인자들을 불러와서 받고, 대입하고, 이것들을 xor연산하고 대입한다음

read_six_numbers를 불러와서 처리를 한다. 그럼 read_six_numbers는?

 

read_six_numbers

8. lea A, B: A의 주소값을 ecx에 옮긴다.

BELATED ARTICLES

more