bomb lab: phase_2
2019. 8. 21. 23:56
<간단한 어셈블리어>
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는 세트라는 뜻.
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는?
8. lea A, B: A의 주소값을 ecx에 옮긴다.
'Undergraduate Records' 카테고리의 다른 글
[0910] 시스템 프로그래밍 복습 (0) | 2019.09.11 |
---|---|
[0909] 컴퓨터의 요소, CPU Time을 구하는 방법 (0) | 2019.09.09 |
bomb lab: phase_1 문제 풀이 (0) | 2019.08.21 |
GitHub 개념 사용서 - 기본편 (0) | 2019.08.20 |
스케줄러 만들기 5 - index 바꾸기 (1) | 2019.08.20 |