20140731 (Assembly loop, 배열, lea, pipe line)
114일차
--------------
Assembly
--------------
------- Conditional Jump Instruction 종류
--- 숫자 맞추기 게임을 통한 Assembly 예제 소스
------- loop Instruction
반복문
점프문과 비슷하나 일정 반복에 더 강점을 갖고 있다.
점프 범위는 -128 ~ 127 byte 이다.
이런식으로 사용한다.
ECX Reg와 관련이 있다.
(EAX, EDX는 계산 관련, EBX는 주소 관련 Reg이다.)
ECX의 값이 0이 될 때까지 계속 돈다.
--- 배열
지금까지 소스에서 문자열 배열을 가끔 봐 왔고
숫자 배열도 문자열 배열과 마찬가지로 선언한다.
Array DWORD 10 DUP (?)
C => int Array[10];
이렇게 사용한다.
--- lea Instruction
주소 값을 대입한다.
lea ebx , number1
C => ebx = &number1;
배열과 점프, lea 예제)
------- Pipe line
CPU가 명령을 실행하는 과정이 3가지가 있다.
- Fetch an instruction from memory 명령을 가져옴
- Decode the instruction 명령을 해석
- Execute the instruction 명령 실행
이것이 이어지는 것을 pipe line 이라고 한다.
그런데 여기서 문제가 jump문이 나올 때 이 pipe line이 깨지기 때문에
반복문, 제어문을 많이 사용하면 CPU의 효율이 떨어진다.
그렇다고 반복문, 제어문을 사용하지 않을 수 없으니
반복문과 제어문을 사용할 때 이런 것을 생각하고 작성해야 한다.