강동옥
가입: 2009년 9월 18일 올린 글: 602
|
올려짐: 2014년10월31일 13:51 주제: 숙제 5 변경사항 및 스펙 정리 (11/4 10:00 기준) |
|
|
Exercise 1. "SM5"
- translate.ml 을 제출합니다.
- "같은 일을 하는" 은 다음과 같이 정의됩니다.
"같은 일을 한다" = "같은 조건에서 실행했을 때 모든 side-effect 의 결과가 같다"
+ "같은 조건" : K-- 에서의 빈 메모리, 빈 환경 / SM5 에서의 "C 만 가지고 있는 빈 기계상태"
+ "모든 side-effect" : K-- 에서의 read/write, SM5 에서의 get/put
간단한 예를 들면, K-- 에서 read 로 3을 받아 write 로 4 를 내놓았다면, SM5 에서도 get 으로 3 을 받아 put 으로 4 를 내놓아야 한다는 것입니다.
그 도중에 일어나는 환경, 메모리의 변화는 "같은 일을 한다" 와 무관합니다.
-"같은 일을 하는" SM5 명령들을 만드는 과정에서, 환경과 메모리를 써서 어떤 값을 저장해 둬야 하는 경우가 있습니다.
이 때 입력으로 들어온 K-- 프로그램에서 사용하는 변수 이름과 겹치지 않는 변수 이름을 써서 SM5의 환경에 bind해야 하는데, 이를 위해서는 변수 이름 뒤에 #와 같은 특수 문자를 붙이시면 되겠습니다.
- 뼈대코드의 k.ml 파일에서 버그가 발견되었습니다. (for 문의 semantics 관련) 이를 수정한 k.ml 파일을 다음 링크에서 받아 교체해 주시기 바랍니다.
http://ropas.snu.ac.kr/~ta/4190.310/14/document/k.ml
https://ropas.snu.ac.kr/phpbb/viewtopic.php?t=4528 글에서 제공해 드린 K-- 스펙문서에 명시되어 있는 semantics를 제대로 따라가도록 버그를 수정하였습니다.
--------------------------------------------------
Exercise 2. "SM5 Limited"
- sm5.ml 을 제출합니다.
- Sm5 모듈이 SM5 시그니처를 따르기만 하면, gc를 구현하기 위해서 어떠한 변경을 가해도 괜찮습니다. 다만, 숙제 문서에 명시된 SM5의 semantics에 어긋나는 일이 있어서는 안 됩니다.
채점시에도, SM5의 semantics는 제대로 유지되었다고 가정하고 테스트케이스를 돌릴 것입니다.
- 메모리 크기의 제한을 8192(8k) 에서 128로 바꾸도록 하겠습니다. 예년에 크기 제한이 8192개였을 때, 채점에 너무 오랜 시간이 걸리는 문제가 있었기 때문입니다.
혹시 이 게시글을 미처 확인하지 못해 메모리 크기 제한을 8192로 하여 코드를 작성하여 감점된 경우에는, 일체의 페널티 없이 수정해서 재채점해 드리겠습니다.
- 메모리의 크기는 malloc 호출로 인해 생성된 location의 개수로 판단합니다. 작년 게시판에 올라온 질문 두 개의 답변을 참조하시면 되겠습니다.
https://ropas.snu.ac.kr/phpbb/viewtopic.php?t=4028
https://ropas.snu.ac.kr/phpbb/viewtopic.php?t=3996
- gc 는 128개의 주소를 모두 사용하여 malloc 할 것이 더 이상 없을 때 동작해야 합니다. 주소를 모두 사용한 상태에서 메모리 할당을 시도할 때, gc 를 실행하였음에도 불구하고 malloc 할 수 없다면 뼈대코드에 제공된 GC_Failure예외를 내 주세요.
채점의 일관성을 위한 스펙 결정이니 꼭 지켜주시기 바랍니다.
- 크게 아래와 같은 두 경우를 기본으로 하여, 이에 기반한 여러가지 시나리오를 만들어 채점이 이루어질 예정입니다. 아래의 두 개 경우에 올바르게 작동하지 않는다면, 조교 팀에서 GC가 제대로 작동하고 있는지 확인할 방법이 없으므로, 나머지 테스트케이스에 대해서 모두 0점처리 될 것입니다. 아래의 두 경우에 대해 제대로 작동하는 것을 꼭 확인하고 제출해 주시기 바랍니다.
1) 128 개를 할당하고, 각각 고유한 이름으로 바인딩되어, 모두가 유효한 메모리인 경우
-> 129 번째 할당 시도시 정상적으로 예외가 일어나는지.
2) 128 개를 할당하였으나, 바인딩되지 않은 주소가 있어 GC 가능한 경우
-> 129 번째 할당 시도시 정상적으로 할당 되는지. 그리고 유효한 메모리 엔트리의 값이 변하지 않았는지.
------------------------------------
Exercise 3. "Lambda Calculus"
- evaluate.ml 을 제출합니다.
- reduce하는 과정이 무한히 계속되는 입력은 채점에 사용하지 않겠습니다. 이러한 입력에 대해서는 자유롭게 처리하셔도 좋습니다. reduce하는 과정이 무한히 계속될 경우, 답이 될 수 있는 표현(lexp)이 여러 개 있을 수 있기 때문에, 위와 같이 결정하였습니다.
- test case는 모호하지 않도록 괄호를 친 인풋을 넣겠습니다. (혹 모호하더라도 조교들이 제공한 파서의 -pp 옵션 결과 기준으로 채점합니다.) |
|