게시판 인덱스

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

malloc구현에 있어...

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



가입: 2006년 9월 18일
올린 글: 43

올리기올려짐: 2006년10월28일 2:09    주제: malloc구현에 있어... 인용과 함께 답변

sm5에서, 로케이션은 아시다시피 <b, o> 형태를 그대로 갖는데요,

MALLOC을 할때 base는 새로 잡아주지만, 아무리 뒤져봐도 offset을 변화시키는 내용을 sm5 소스내에서 찾을수가 없네요.

오프셋 변화가 불가능하다면 포인터 연산에 의한 참조는 불가능하다는건데...

저혼자 방법을 찾지 못하는거라면 난감하네요Smile
_________________
...
위로
사용자 정보 보기 비밀 메시지 보내기 이메일 보내기
신종호



가입: 2006년 9월 10일
올린 글: 16

올리기올려짐: 2006년10월28일 8:01    주제: 인용과 함께 답변

있긴한데 malloc 구현은 좀 힘들죠....OTL
위로
사용자 정보 보기 비밀 메시지 보내기
이준



가입: 2006년 9월 7일
올린 글: 30

올리기올려짐: 2006년10월28일 18:08    주제: 인용과 함께 답변

malloc에 대해 offset의 값을 건드려야 하는걸까요?
아니, 건드릴 수 있나요?;;

malloc의 경우는 메모리에 새로운 주소를 사용할 수 있는 장소라고 표시하는 것이잖아요..( allocate이죠.. )
헌데 sm5의 경우 allocate과 같은 역할을 하는건 없지 않나요? 다시말해, sm5는 메모리를 사용함에 있어서
allocate을 먼저 하고 사용하는 것이 아니라 그냥 주소만 주어지면 접근 가능하게끔 되어있는것 같은데요..

k-의 경우에 malloc(2)를 하겨되면 (base, 0)과 (base, 1)에대한 주소만 메모리에서 사용가능하도록 하지만
( 이외의 주소에 접근하려하면 not_allocated를 뱉습니다.. )
sm5의 경우에 MALLOC을 한번하여 (base, 0)을 얻게 되면 그 이후로 (base, 0)뿐만 아니라
(base, 1), (base,2) ............ (base, sizeof(int)-1) 까지 사용가능하게 됩니다.

이렇게 sm5에서 메모리에 allocate을 먼저 하고 사용하지 않는데 굳이
k-처럼 offset의 값에 신경을 써 줘야 하는 걸까요?
만약 그렇다고 하면 도대체 어떻게 신경을 써줘야 하는거죠? +_+
누가 답변좀 해주세요 ㅜ.ㅜ
위로
사용자 정보 보기 비밀 메시지 보내기
송수현



가입: 2006년 9월 4일
올린 글: 25

올리기올려짐: 2006년10월28일 18:26    주제: 인용과 함께 답변

저도 일단은.. malloc하나만 냉큼 하고 나머지는 그냥 줄줄이 이어지도록.. 해버렸네요.

다른 방법은 아무리 생각해도 안되네요 ㅜㅜ
위로
사용자 정보 보기 비밀 메시지 보내기 이메일 보내기
조은상



가입: 2006년 9월 8일
올린 글: 17

올리기올려짐: 2006년10월28일 20:43    주제: 인용과 함께 답변

저도.. 일단 malloc 하나만 하도록 해놓았어요..

다른 분들도 같은 고민을 하고 있으니 반갑네요 ... ㅠㅠ
위로
사용자 정보 보기 비밀 메시지 보내기
박대준



가입: 2005년 10월 7일
올린 글: 245

올리기올려짐: 2006년10월28일 21:14    주제: 인용과 함께 답변

이준 씀:
k-의 경우에 malloc(2)를 하겨되면 (base, 0)과 (base, 1)에대한 주소만 메모리에서 사용가능하도록 하지만
( 이외의 주소에 접근하려하면 not_allocated를 뱉습니다.. )
sm5의 경우에 MALLOC을 한번하여 (base, 0)을 얻게 되면 그 이후로 (base, 0)뿐만 아니라
(base, 1), (base,2) ............ (base, sizeof(int)-1) 까지 사용가능하게 됩니다.
맞습니다.
sm5에서는 메모리 공간을 10개 할당했다고 해서, 11번째 메모리 공간에 접근하는 것을 막을 방법이 전혀 없습니다.
어쩌면 기계가 그러한 것을 막는다는 것 자체가, 인터프리터 레벨에서 생각하다 보니, 기계어인 sm5를 너무 과대평가한 것은 아닐까요?
(그러한 것을 기계가 막아준다면, buffer overrun과 같은 에러는 생기지 않겠지요.Smile)

문제의 정의에 보시면,
이번 숙제는 잘 돌아가는 k- 프로그램을 받아 동일한 일을 행하는 sm5 명령어들로 바꾸는 것이기 때문에,
할당된 메모리를 넘어서 접근하는 프로그램(잘 돌아가지 않는 프로그램)에 대해서는 변환을 어떻게 하셔도 무방합니다.


덧붙여,
sm5를 높게 평가하셔서,
할당된 메모리를 넘어서 접근하는 경우 적절한 예외를 발생시키도록 변환하신 분께는 추가점수를 드리도록 하겠습니다.
위로
사용자 정보 보기 비밀 메시지 보내기
이전 글 표시:   
이 게시판은 잠겼으므로 글을 올리거나, 답변을 하거나 수정을 할 수 없습니다   이 주제는 잠겼으므로 답변을 하거나 수정을 할 수 없습니다     게시판 인덱스 -> 4190.310 Programming Languages (Fall 2006) 시간대: GMT + 9 시간(한국)
페이지 11

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


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