CIL 어셈블리 언어

기본으로 제공되는 변수를 이용해 연산하기

3.3) 기본으로 제공되는 변수를 이용해 연산하기

여기서 하나 더 중요한 사실을 말하자면, CIL 언어에서는 기본적으로 사용할 수 있는 변수의 수가 제한되어있다.이 문서에서는 이러한 변수를 기본 변수라고 하겠다다음 예제에서는 이들을 이용하여 연산을 해보고 그 결과를 출력하는 프로그램을 작성해본다.

Calculation.c

#include "CIL.h"

STRING sNewLine = "\n"; // 개행 문자를 삽입하기 위한 개행 문자열입니다.

 

PROC(main) // main 프로시저의 정의가 시작되는 지점입니다.

 

// 준비된 변수 a에 10을 대입하고 a를 출력합니다.

MOVL(a, 10) // a = 10

 

// a를 출력합니다.

PUSH(a)

INVOKE(print_int)

 

// 개행 문자를 삽입합니다.

PUSH(sNewLine)

INVOKE(print_str)

 

// 변수 a에 10을 더하고 a를 출력합니다.

ADD(a, 10) // a = 10

 

// a를 출력합니다.

PUSH(a)

INVOKE(print_int)

 

// 개행 문자를 삽입합니다.

PUSH(sNewLine)

INVOKE(print_str)

 

// 준비된 변수 b에 14를 대입하고 a에서 b를 뺍니다.

MOVL(b, 14) // b = 14

SUB(a, b) // a -= b

 

// a를 출력합니다.

PUSH(a)

INVOKE(print_int)

 

ENDP // 프로시저의 정의를 마칩니다.

실행 결과

10

20

6

CIL은 추가적인 변수 선언을 허용하지 않는다다음은 이미 정의된 변수 중 일부이다.

- a: accumulator. 모든 연산의 결과가 누적되는 누산 변수다.

- c: counter. 반복문에서 반복 횟수를 결정할 때 참조하는 카운터 변수다.

- d: data. 연산에서 임시로 사용하는 데이터를 보관하는 변수다.

- b: base. 여기서는 거의 사용하지 않을 변수로 봐도 좋다.

CIL은 C보다 저급 언어이므로 복합 연산을 지원하지 않기 때문에한 번에 하나씩의 연산만 수행해야 한다. 1+2*3+4와 같은 식을 예로 들면, CIL에서는 이 식을 다음과 같이 표현한다.

MOVL(a, 1) // a = 1

MOVL(b, 2) // b = 2

MUL(b, 3) // b *= 3

ADD(a, b) // a += b

ADD(a, 4) // a += 4

댓글

댓글 본문
graphittie 자세히 보기