게시판 인덱스

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

숙제4에 관련되어서

 
이 게시판은 잠겼으므로 글을 올리거나, 답변을 하거나 수정을 할 수 없습니다   이 주제는 잠겼으므로 답변을 하거나 수정을 할 수 없습니다     게시판 인덱스 -> 4541.664A Program Analysis (Spring 2009)
이전 주제 보기 :: 다음 주제 보기  
글쓴이 메시지
임경영



가입: 2009년 4월 5일
올린 글: 27

올리기올려짐: 2009년4월6일 18:23    주제: 숙제4에 관련되어서 인용과 함께 답변

두시간동안 장문의 글을 썼는데;;
세션이 날라가서인지 글이 날라갔네요.. ㄷㄷㄷ..

요점만 쓸께요.

1.
문제 정의
인터프리터를 하는 세함수를 작성하여라
k.ml에 주어진 함수는 힌트라고 생각되어짐.

1)tracing
read값에 따라서 메모리의 연결이 달라질수 있음.
{메모리}-..-{메모리}-{메모리}
{메모리}-..-{메모리}-{메모리}
{메모리}-..-{메모리}-{메모리}
와 같은 형태로 출력되는 것으로 생각됨

2)collecing
{메모리},{메모리},..,{메모리}
의 형태로 출력되는 형태

3)pointcollect
명령어1:{메모리}
명령어2:{메모리}
명령어3:{메모리}
등의 형태로 출력되는 형태

ps.{메모리}는 실제는 기계상태를 의미..

2. C;C 문법때문에 모호한 경우
if E C1;C2 C3;C4의 경우
if E then C1;C2 elseC3를 하고 C4를 하는 것인지
if E then C1;C2 else C3;C4인지 모호함.
이것에 대한 정의가 필요할 듯합니다.

3. 기계상태에 대한 정의
기계상태는 현재는 메모리만! 하는 것과 메모리와 PC값을 튜플로 정의하는 방법 두가지인듯합니다.
이때 PC의 사용여부에 따라 메모리의 중복처리에 대한 방법도 달라질듯합니다.

제 생각은 PC값도 함께 사용하는 것이 좋을듯합니다.

4.PC값에 대한 정의
만약 PC를 사용한다면 이값에 대한 정의를 할 필요가 있을듯합니다.
PC를 0을 시작으로 명령어가 나올때마다 1씩 증가하면서 값을 줄지
PC를 0부터 시작해서 실제 명령어가 실행될때 1씩 증가시킬지에 따라 결과가 달라질수 있습니다.

예를 들어
C1; if e C2 C3의 경우

PC cmd
0 C1
1 if e C2 C3
2 C2
3 C3 인 경우와

PC cmd
0 C1
1 if e C2 C3
2 C2 or C3 인 경우로 나눌수 있을 것 같습니다.

PC값이 명령마다 달라진다면 기계상태를 확인할때 메모리와 PC값 두개가 값을 경우가 발생함으로, 이것에 대한 체크가 필요할 것 같습니다.
이런의미로 PC값을 구체적으로 정하는 것이 좋을 것 같다는 생각입니다.


원래 글은 훨씬길고 예도 많았는데..
정확한 스펙이 없다보니 글을 적어보았습니다.

실제 수행될 입력과 출력의 예가 주어진다면 더 좋겠지만 ^^
이런식으로 의논해보는 것도 좋겠네요.

의견주세요!
감사합니다.
위로
사용자 정보 보기 비밀 메시지 보내기
공순호



가입: 2005년 9월 29일
올린 글: 363
위치: 302동 312-2호

올리기올려짐: 2009년4월6일 21:09    주제: 인용과 함께 답변

임경영 씀:
2. C;C 문법때문에 모호한 경우
if E C1;C2 C3;C4의 경우
if E then C1;C2 elseC3를 하고 C4를 하는 것인지
if E then C1;C2 else C3;C4인지 모호함.
이것에 대한 정의가 필요할 듯합니다.


프로그램을 작성하실 때에는 ()을 이용할 수 있습니다.
if E C1;C2 C3;C4의 경우에는 (if E C1;C2 C3);C4로 처리됩니다.

임경영 씀:
3. 기계상태에 대한 정의
기계상태는 현재는 메모리만! 하는 것과 메모리와 PC값을 튜플로 정의하는 방법 두가지인듯합니다.
이때 PC의 사용여부에 따라 메모리의 중복처리에 대한 방법도 달라질듯합니다.

제 생각은 PC값도 함께 사용하는 것이 좋을듯합니다.


기계 상태는 메모리를 포함하는 것으로 한다는 공지를 드린 바 있습니다.
따라서 숙제는 일률적인 기준으로 자동 채점하는 것이 아니라, 눈으로
보고, 손으로 돌려보면서 채점할 예정입니다.

기계 상태라는 것을 다음과 같은 질문을 생각해보면 좋을 것 같습니다.

"기계 1에서 프로그램을 수행하던 도중에 기계 1을 멈추고, 이 일을 기계
2에서 계속 수행하도록 하고 싶다면 어떤 정보들이 필요할까?"

우리가 일반적으로 이용하는 Von Neumann 아키텍처의 컴퓨터에서는
메모리상에 프로그램이 들어있으므로, 메모리(register나, hdd를
포함하는)와 PC값을 기계 상태라고 생각할 수 있습니다.

문제에서 설명된 기계에서는 메모리에 프로그램이 들어갈 수 없습니다.
따라서 기계 상태를 생각한다면,

(메모리, 코드, 다음 실행될 코드의 부분)

과 같은 기계 상태를 생각할 수 있습니다. 혹은

(메모리, 앞으로 실행될 코드들)

과 같은 기계 상태를 생각할 수도 있습니다.

임경영 씀:
4.PC값에 대한 정의
만약 PC를 사용한다면 이값에 대한 정의를 할 필요가 있을듯합니다.
PC를 0을 시작으로 명령어가 나올때마다 1씩 증가하면서 값을 줄지
PC를 0부터 시작해서 실제 명령어가 실행될때 1씩 증가시킬지에 따라 결과가 달라질수 있습니다.

예를 들어
C1; if e C2 C3의 경우

PC cmd
0 C1
1 if e C2 C3
2 C2
3 C3 인 경우와

PC cmd
0 C1
1 if e C2 C3
2 C2 or C3 인 경우로 나눌수 있을 것 같습니다.

PC값이 명령마다 달라진다면 기계상태를 확인할때 메모리와 PC값 두개가 값을 경우가 발생함으로, 이것에 대한 체크가 필요할 것 같습니다.
이런의미로 PC값을 구체적으로 정하는 것이 좋을 것 같다는 생각입니다.


위에서 말씀드린 것과 같이 프로그램에서 "다음 계산이 수행될 위치"를
나타내는 PC는 다양하게 정의될 수 있습니다만, 적으신 글에서처럼 program
point를 PC의 일부분으로 이용하고자 하는 것이면, 이를 위해서 label이
이미 제공되고 있으니, 그것을 이용하면 됩니다.

LR parsing을 하면서 프로그램에 label을 붙이기 때문에 label의 순서가
프로그램의 실행 순서와 일치하지는 않지만, 반드시 그래야할 필요는 사실
없습니다. label은 프로그램의 특정 위치를 정확하게 가르치면 되고,
프로그램의 실행 순서는 사실 label이 아닌 프로그램 자체의 의미에 의해서
명확하게 결정되기 때문입니다.
_________________
- soon@ropas
위로
사용자 정보 보기 비밀 메시지 보내기 글 올린이의 웹사이트 방문
이전 글 표시:   
이 게시판은 잠겼으므로 글을 올리거나, 답변을 하거나 수정을 할 수 없습니다   이 주제는 잠겼으므로 답변을 하거나 수정을 할 수 없습니다     게시판 인덱스 -> 4541.664A Program Analysis (Spring 2009) 시간대: GMT + 9 시간(한국)
페이지 11

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


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