| 이전 주제 보기 :: 다음 주제 보기 |
| 글쓴이 |
메시지 |
조대호
가입: 2024년 3월 12일 올린 글: 9
|
올려짐: 2024년5월10일 2:02 주제: 과제 6-2 질문 |
|
|
안녕하세요, 과제 6-2에 대해 질문이 있습니다.
SM5의 스펙을 보면 push는 Value값 v를 받을 수 있고 v는 Integer + Bool + Unit + Record + Loc인데,
| 코드: | | PUSH (Val (Z 10)); PUSH (Val (L (0, 1))); STORE; |
처럼 push v의 v가 loc 혹은 record값인 경우가 valid한 sm5의 프로그램인지 궁금합니다. 제가 이해한 것이 맞다면 machine.mli 에서 loc과 record의 실제 타입을 드러내지 않아서 mli을 수정하지 않고서는 gc_test등에서 해당 프로그램을 실제로 돌려볼 수 는 없는 것 같은데, 문서 스펙상 불가능하지는 않아 보여서 질문드립니다.
감사합니다. |
|
| 위로 |
|
 |
이재호 Site Admin
가입: 2022년 3월 6일 올린 글: 209
|
올려짐: 2024년5월11일 13:52 주제: |
|
|
안녕하세요,
값이 loc 혹은 record이 경우에도 올바른 Sm5 프로그램이지만, Gc_test 모듈에는 이를 push의 인자로 사용하는 경우는 들어있지 않습니다.
원하신다면 인터페이스에 loc과 record의 타입을 드러내어 확인해보셔도 괜찮습니다.
감사합니다.
조교 드림
TA 이재호
e-mail: jhlee@ropas.snu.ac.kr |
|
| 위로 |
|
 |
조대호
가입: 2024년 3월 12일 올린 글: 9
|
올려짐: 2024년5월11일 16:11 주제: |
|
|
조교님, 답변 감사합니다.
그렇다면 sm5 프로그램에서 env, malloc을 우회해서 하드코드된 loc을 push하고 그 주소의 값으로 mem에서 store/load를 하는 것도 가능할 것 같은데요, 그러면 저희 과제의 설명에서는 gc가 "현재 상태의 세 개의 부품에서" 출발해서 미래에 사용할 수 있는 부분만을 모으면 된다고 힌트가 주어져 있는데, 이러한 임의의 loc/record push까지 고려하면 출발 지점이 세 개의 부품이 아니게 되지 않나요? 제가 잘못 생각하고 있는 부분이 있는지 궁금합니다.
감사합니다. |
|
| 위로 |
|
 |
이재호 Site Admin
가입: 2022년 3월 6일 올린 글: 209
|
올려짐: 2024년5월11일 19:08 주제: |
|
|
안녕하세요,
malloc을 우회하여 직접 loc을 push하는 경우는 고려하지 않으셔도 됩니다.
테스트는 현재 주어진 machine.mli를 변경하지 않고 돌아가는 경우만 진행됩니다.
감사합니다.
조교 드림
TA 이재호
e-mail: jhlee@ropas.snu.ac.kr |
|
| 위로 |
|
 |
|