게시판 인덱스

 
 FAQFAQ   검색검색   멤버리스트멤버리스트   사용자 그룹사용자 그룹   사용자 등록하기사용자 등록하기 
 개인 정보개인 정보   비공개 메시지를 확인하려면 로그인하십시오비공개 메시지를 확인하려면 로그인하십시오   로그인로그인 

숙제 4 질문

 
이 게시판은 잠겼으므로 글을 올리거나, 답변을 하거나 수정을 할 수 없습니다   이 주제는 잠겼으므로 답변을 하거나 수정을 할 수 없습니다     게시판 인덱스 -> 4190.310 Programming Languages (Fall 2010)
이전 주제 보기 :: 다음 주제 보기  
글쓴이 메시지
최민아



가입: 2009년 9월 28일
올린 글: 236

올리기올려짐: 2010년10월15일 21:18    주제: 숙제 4 질문 인용과 함께 답변

어떤 k-- 프로그램을 empty메모리와 empty Environment에서 실행한 결과가 v와 mem이라 하면
이 k--프로그램을 번역해서 SM5에서 돌리면 다 돌리고 난 후에 스택의 맨 위에 Value 타입의 v가 있고 M은 mem과 같은 location에 같은 Value가 binding 되어 있으면 되나요?

그리고 SM5 모듈에서는 나눗셈에서 divide zero 익셉션이 없는데 이건 RunError가 아니라 Ocaml의 기본 익셉션이 발생하도록 놔두면 되나요?

그리고 이런 질문을 드려도 될 지 잘 모르겠지만 SM5 기계의 environment에서 변수의 위치나 함수 찾으려면 어떻게 해야 하나요? environment에서 스택으로 꺼내는 건 unbind밖에 없는 것 같은데 unbind는 항상 environment의 가장 앞에서만 꺼내네요..찾을 때까지 unbind를 한다음 bind를 다시 하는 방식으로 해야 하는 건가요?
위로
사용자 정보 보기 비밀 메시지 보내기
박광석



가입: 2008년 9월 5일
올린 글: 18

올리기올려짐: 2010년10월16일 1:37    주제: 저도 비슷한 질문 드려요. 인용과 함께 답변

번역기는 Sm5의 command만 고치게 되어있고
S, M, E, K에 대한 직접적인 접근은 불가능합니다

그런데 주어진 Sm5의 작동 스텝을 보면
숙제의 스펙을 구현하기가 불가능한것 같아요.

1. malloc 후 store 하는 과정에서 location에 대한 정보가 스택에서
사라져 버립니다. 그래서 바인딩도 못하죠.
따라서 값이 사라지지 않고 필요에 따라 이후에 pop을 통해
스택을 비워줄 수 있게 바꿔줘야 할 것 같습니다.

2. 최민아씨 말씀대로 environment에서 id를 통해 환경변수에 access하는
command가 필요한 것 같습니다.

3. jtr command만으로 while, for loop를 구현가능한건가요?
저는 어떻게 궁리를 해서 짜봐도 스택 오버플로우가 떠요 ㅠㅠ
위로
사용자 정보 보기 비밀 메시지 보내기
구원준



가입: 2009년 9월 24일
올린 글: 11

올리기올려짐: 2010년10월16일 4:11    주제: 인용과 함께 답변

1. Malloc 후 바인딩을 먼저하고 스토어하면 문제가 없을 것 같습니다.

2. environment에서 id를 통해 변수나 Procedure에 접근하는 방법은 Push x 가 있습니다.

3. while, for loop을 서브 프로시져를 생성하지 않고 (즉, Call을 사용하지 않고 번역할 수 있는 방법) 구현할 수 있나요..? 저도 아무리 궁리를 해도 답이 잘 나오지 않네요ㅜㅜ

혹시 제가 질문을 잘못 이해한 부분이 있으면 조교님이 와서 정정해 주시겠죠....?ㅎㅎ
위로
사용자 정보 보기 비밀 메시지 보내기
조성근



가입: 2009년 9월 14일
올린 글: 283

올리기올려짐: 2010년10월16일 14:31    주제: 인용과 함께 답변

최민아 씀:
이 k--프로그램을 번역해서 SM5에서 돌리면 다 돌리고 난 후에 스택의 맨 위에 Value 타입의 v가 있고 M은 mem과 같은 location에 같은 Value가 binding 되어 있으면 되나요?

문제에서 요구하는 것은 변환하기 전의 K-- 프로그램이 하는 일과 변환된 SM5 프로그램이 하는 일이 같도록 하는 것입니다. 이는 K-- 프로그램의 부품과 SM5 프로그램 부품의 1대1 대응이 아닙니다. 각프로그램의 실행에서 같은 값을 READ했을 때, 같은 값을 WRITE하면 됩니다.

최민아 씀:
그리고 SM5 모듈에서는 나눗셈에서 divide zero 익셉션이 없는데 이건 RunError가 아니라 Ocaml의 기본 익셉션이 발생하도록 놔두면 되나요?

RunError가 발생하도록 수정해 두었습니다.
http://ropas.snu.ac.kr/~ta/4190.310/10/skeleton/hw4/sm5.ml

구원준 씀:
while, for loop을 서브 프로시져를 생성하지 않고 (즉, Call을 사용하지 않고 번역할 수 있는 방법) 구현할 수 있나요..? 저도 아무리 궁리를 해도 답이 잘 나오지 않네요ㅜㅜ

글쎄요. 이건 저도 잘 모르겠군요. 하지만 저것들을 반드시 JTR 명령 만으로 구현해야 하는 것은 아닙니다. Question


조성근 가 2010년10월17일 9:13에 수정함, 총 1 번 수정됨
위로
사용자 정보 보기 비밀 메시지 보내기
최종욱



가입: 2009년 9월 15일
올린 글: 84

올리기올려짐: 2010년10월16일 17:51    주제: 인용과 함께 답변

빠른 수정 감사합니다!

그런데 스켈레톤 sm5.ml 에서 에러가 납니다. 173번째 raise RunError 에서 괄호가 하나 빠져있네요.. Smile
_________________
Jongwook Choi
Seoul National University, School of Computer Science & Engineering
위로
사용자 정보 보기 비밀 메시지 보내기
이전 글 표시:   
이 게시판은 잠겼으므로 글을 올리거나, 답변을 하거나 수정을 할 수 없습니다   이 주제는 잠겼으므로 답변을 하거나 수정을 할 수 없습니다     게시판 인덱스 -> 4190.310 Programming Languages (Fall 2010) 시간대: GMT + 9 시간(한국)
페이지 11

 
건너뛰기:  
새로운 주제를 올릴 수 없습니다
답글을 올릴 수 없습니다
주제를 수정할 수 없습니다
올린 글을 삭제할 수 없습니다
투표를 할 수 없습니다


Powered by phpBB 2.0.21-7 (Debian) © 2001, 2005 phpBB Group
Translated by kss & drssay