이전 주제 보기 :: 다음 주제 보기 |
글쓴이 |
메시지 |
윤상필
가입: 2005년 9월 25일 올린 글: 14 위치: 아스트랄계
|
올려짐: 2005년11월2일 23:42 주제: 5-1 문제 질문 |
|
|
K--에는 MALLOC과 ASSIGNG가 있고 MALLOC은 가변 길이의 연속된 메모리 셀을 할당할 수 있으며 value 타입 중에 Location이 있어서 Location과 Num의 ADD, SUB가 가능합니다만...
이걸 SM5로 옮길려다 보니, SM5에서 메모리를 할당하는 인스트럭션은 MALLOC밖에 없고 MALLOC은 location 타입을 스택에 올리는데, ADD는 정수가 아니면 에러를 냅니다. K--가 정적 타입 시스템을 사용하는 언어가 아니기에 K--의 ADD는 SM5의 ADD로 대응될 수밖에 없는데 Location과 Num의 덧셈을 나타낼 방법이 SM5에는 없습니다. 한가지 방법은 주소값을 int로 나타내는 것인데, SM5.MALLOC이 만들어내는 location 타입을 int로 변환할 방법이 없고, 스펙만 가지고는 연속된 SM5.MALLOC 인스트럭션이 연속된 location을 만드는지도 알 수 없으므로 이 방법으로는 구현이 불가능해 보입니다.
어떻게 하면 될까요? |
|
위로 |
|
|
윤상필
가입: 2005년 9월 25일 올린 글: 14 위치: 아스트랄계
|
올려짐: 2005년11월2일 23:53 주제: |
|
|
지금 보니 스펙의 Value에는 Location이 포함이 안되는군요. 이것의 의미는 역시 Location 타입을 Integer로 구현하라는 말인 건가요? |
|
위로 |
|
|
오학주
가입: 2005년 9월 5일 올린 글: 118
|
올려짐: 2005년11월3일 14:13 주제: |
|
|
K- 프로그램을 SM5의 instruction으로 변환하기 위해서는 두 언어의 sematics를 아셔야 합니다.
K-의 의미정의는 이전 숙제를 통해서, 조교페이지의 문서를 통해서 충분히 아실것이라 생각됩니다.
SM5의 semantics를 정리한 문서는 제공되지 않았지만 sm5.n에 인터프리터가 구현되어 있습니다.
K-의 배열과 포인터 연산때문에 변환이 쉽지는 않겠지만 나름대로의 아이디어를 내셔서 문제를 해결해 보시기 바랍니다.
오학주 가 2005년11월4일 12:29에 수정함, 총 1 번 수정됨 |
|
위로 |
|
|
윤상필
가입: 2005년 9월 25일 올린 글: 14 위치: 아스트랄계
|
올려짐: 2005년11월3일 22:25 주제: |
|
|
뭔가 빡세군요 -_-
결국 int를 location 대용으로 써야 되는 분위기인데.. int의 공간을 나눠서 특정 영역을 location용으로 써도 됩니까? 다시 말해, 특정 영역의 값은 일반 정수 계산으로는 나오지 않는다고 가정해도 됩니까?
또 한가지, int를 location으로 쓰기 시작하면 K--에서는 의미 없는 프로그램이라도 SM5에서는 우연의 일치에 의해 돌아가는 경우도 생길 것 같은데, 이건 허용되는 것입니까? |
|
위로 |
|
|
서성현
가입: 2005년 9월 29일 올린 글: 54
|
올려짐: 2005년11월3일 22:47 주제: 제가 조교님은 아니지만.. |
|
|
윤상필 씀: | 뭔가 빡세군요 -_-
결국 int를 location 대용으로 써야 되는 분위기인데.. int의 공간을 나눠서 특정 영역을 location용으로 써도 됩니까? 다시 말해, 특정 영역의 값은 일반 정수 계산으로는 나오지 않는다고 가정해도 됩니까? |
음.. 예를 들어 2^20보다 큰 정수는
무조건 location 타입으로 가정한다는 것인가요?
하지만 굳이 그렇게 하지 않아도
다른 방법으로 깔끔하게(?) 구현하는 친구가 있더군요.
(전 아직 구현 못했지만..)
게다가, 잘 도는 K--프로그램을 잘 돌지 않도록 trans한다면
감점이 좀 되지 않을까요? ^^;
윤상필 씀: | 또 한가지, int를 location으로 쓰기 시작하면 K--에서는 의미 없는 프로그램이라도 SM5에서는 우연의 일치에 의해 돌아가는 경우도 생길 것 같은데, 이건 허용되는 것입니까? |
숙제 문서에 보면
인용: | 여러분이 할 것은, 잘 돌아가는 K-- 프로그램을 입력으로 받아서 같은일을 하는 SM5 프로그램으로 변환하는 함수를 작성하는 것이다. |
라고 되어 있군요.
잘 돌아가지 않는 K-- 프로그램이 입력으로 들어오는 경우는
생각하지 않아도 된다는 것 같네요. _________________ http://snupl.wo.to |
|
위로 |
|
|
오학주
가입: 2005년 9월 5일 올린 글: 118
|
올려짐: 2005년11월4일 12:05 주제: |
|
|
오학주 씀: |
SM5의 semantics를 정리한 문서는 제공되지 않았지만 |
이 부분을 정정합니다.
SM5의 semantics는 숙제문서에 정의되어 있지요.
교수님께서 더 이상 자세한 내용을 알지 않아도 된다고 하셨습니다.^^; |
|
위로 |
|
|
|