장민석
가입: 2006년 9월 5일 올린 글: 165
|
올려짐: 2006년10월12일 12:38 주제: Bot이 메모리 테이블에 들어가지 않아도 되나요 |
|
|
나눠주신 소스 코드 중 VAR 구현 부분을 보면 아래와 같습니다.
| 코드: | | eval env m (VAR x) =
(case Mem.fetch (env_loc x env) m of
Some v => v
| None => Bot,
m) |
보시다시피 메모리 값이 None이면, 즉 초기화되지 않았으면 Bot을 반환합니다. 다른 부분도 이런 식으로 구현해도 될까요? 즉 다음과 같은 식으로 말입니다.
| 인용: | 1. Bot은 메모리의 바인딩 테이블에 실제로 저장되지 않습니다.
2. Mem.fetch 실행 시 None값이 반환된다면 Bot으로 변환합니다. |
예를 들어, K- 스펙 문서를 보면 malloc 호출 시, 새롭게 할당된 모든 location을 Bot으로 초기화하도록 되어있습니다. 그런데 이 경우 위의 방법론을 따른다면 실제로 새로 할당된 location들을 Bot으로 초기화할 필요가 없을 것 같습니다. 어차피 None이 자동으로 들어가 있을 테니까요. 그리고 Bot의 개념 자체가 "이 주소는 초기화되지 않았다"는 것인데, Bot으로 초기화한다는 것도 좀 어색한 것 같고요.
요컨대, Bot을 메모리 테이블에 일일이 저장하지 않고, Mem.fetch가 호출되는 경우에 호출하는 루틴에서 None->Bot으로 처리해줘도 무방할까요? |
|