CIL 어셈블리 언어

메모리

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에서도 마찬가지지만 이러한 행위는 아주 위험하기 때문에메모리를 사용할 때는 운영체제가 제공하는 함수를 사용하거나프로시저 내에 지역 변수를 만드는 것이 일반적이다.

댓글

댓글 본문
작성자
비밀번호
graphittie 자세히 보기