3.6) 메모리
기본 변수 m을 이용해 메모리에 직접 접근할 수 있다.
Memory.c |
#include "CIL.h" STRING sNewLine = "\n";
// main PROC(main)
// 기본 변수 a를 8로 초기화합니다. MOVL(a, 8) // a = 8
// 정수를 출력하고 개행합니다. PUSH(a) INVOKE(print_int) PUSH(sNewLine) INVOKE(print_str)
// 메모리 10번지에 값을 설정합니다. // *(int *)(m[10]) = 20; SETL(m + 10, 20);
// 메모리 10번지에서 값을 획득하여 a에 저장합니다. // a = *(int *)(m[10]); GETL(a, m + 10);
// 획득한 값을 출력하여 올바른지 확인합니다. PUSH(a) INVOKE(print_int)
ENDP |
CIL은 메모리에 직접 접근이 가능한 저급 언어이므로, 위와 같이 메모리에 직접적으로 값을 쓸 수 있다. C에서도 마찬가지지만 이러한 행위는 아주 위험하기 때문에, 메모리를 사용할 때는 운영체제가 제공하는 함수를 사용하거나, 프로시저 내에 지역 변수를 만드는 것이 일반적이다.