이전 주제 보기 :: 다음 주제 보기 |
글쓴이 |
메시지 |
손님
|
올려짐: 2006년5월4일 16:58 주제: C-- 에 대한 질문. |
|
|
2번 숙제의 답을 보면
Mㅏ x => M(x)
M ㅏ *x => M(M(x)
그리고
M ㅏ &x => x
라고 되어 있습니다.
일단 질문이
저 시메틱스에 따라
메모리가
addr var val
0 x 0
1 y 7
2 z 8
이 상태일 때
k = &y 라는 구문을 만나면
3 k y
3 k 1 중 무엇이 추가되어야 할까요?
다음 질문에 의해 후자가 적당해 보입니다[...]
만약 전자라면 k = &y + &y 라는 구문을 실행했을 때
val 부분에 2y-_-;;;; 를 넣을 수는 없을 테니
k = 2를 넣으면 되는거겠지요?
그러면, C에서와 마찬가지로 C--에서도 세폴-_-이 발생할 수 있습니다.
addr var val
0 x 0
1 y 7
2 z 8
k = *y <--- 아싸 좋구나 세폴
-_-;;; 어쩔까요?
혼자서 낸 결론으로는
1. val에는 실제 메모리처럼 숫자만 들어가고, x ,y 같은 식으로 주소가 들어가지 않는다(주소끼리 + - 연산이 되므로)
2. 세폴이 나면 적절히 Exception을 발생시키고 끝.
3. 주소값은 적절히 assign되며, free같은건 없다.
이렇게 해도 되겠지요?^_^? |
|
위로 |
|
|
손님
|
올려짐: 2006년5월4일 17:00 주제: 역시 뱀다리 |
|
|
아 그리고, 저 말은 메모리 상태를 겉에서 보았을 때 메모리가 갖고 있는 내용 중에 x y 이런건 전혀 없고
그러니까 말하자면
mem (addr->int)
로 구현하겠다는 것입니다.
상관없겠지요^_^? |
|
위로 |
|
|
정찬주(cholonge) 손님
|
올려짐: 2006년5월4일 17:00 주제: 진짜 뱀다리 |
|
|
저 위의 두 글을 쓴 건 접니다[..] |
|
위로 |
|
|
진민식
가입: 2006년 3월 21일 올린 글: 67
|
올려짐: 2006년5월4일 21:55 주제: |
|
|
인용: | 2번 숙제의 답을 보면
Mㅏ x => M(x)
M ㅏ *x => M(M(x)
그리고
M ㅏ &x => x
라고 되어 있습니다.
일단 질문이
저 시메틱스에 따라
메모리가
addr var val
0 x 0
1 y 7
2 z 8 |
모법답안으로 올려진 semantics를 보면,
메모리의 상태가
addr val
x 0
y 7
z 8
처럼 만들어 집니다.
인용: | 만약 전자라면 k = &y + &y 라는 구문을 실행했을 때
val 부분에 2y-_-;;;; 를 넣을 수는 없을 테니
k = 2를 넣으면 되는거겠지요?
그러면, C에서와 마찬가지로 C--에서도 세폴-_-이 발생할 수 있습니다.
|
k = &y + &y 란 문장은 모법담안에서 정의한 semantics에서는
정의가 안되는 operation입니다.(runtime error라고 생각하시면 됩니다.)
모봄답안에서 정의한 semantics에서는 주소는 Var입니다.
Var 끼리의 +, Var에 대한 -, 등등은 정의가 되어 있지 않습니다.
주소끼리의 = 연산은 정의해도 되고 (같은 Var), 정의하지 않고 error
라고 생각하셔도 될 것 같습니다.
인용: | 1. val에는 실제 메모리처럼 숫자만 들어가고, x ,y 같은 식으로 주소가 들어가지 않는다(주소끼리 + - 연산이 되므로)
2. 세폴이 나면 적절히 Exception을 발생시키고 끝.
3. 주소값은 적절히 assign되며, free같은건 없다.
|
1. 위와 같이 하려면 C-- 의 semantics를 새로 정의해야 할 것 같습니다.
주소끼리 +,- 연산이 가능하도록 하도록. |
|
위로 |
|
|
정찬주
가입: 2006년 4월 30일 올린 글: 4
|
올려짐: 2006년5월5일 0:50 주제: |
|
|
k = &y 라는 구문을 만나면
3 k y
3 k 1 중 무엇이 추가되어야 할까요?
라는 답변을... 하시려다가 말아주셨네요 ㅠㅠ(문맥상 3 k y로 생각이 됩니다)
그리고 제가 구현하겠다고 한 것에 대해서
숙제2모범답안을 따르라는 것인지( 3 k y ;;;
저대로 구현해도 된다는 것인지가 궁금합니다
저 메모리 구조가 굉장히 하부 구조이기 때문에
바뀌면 프로그램을 갈아 엎어야 하므로 ㅠ.ㅠ;
오늘 코딩은 여기서 더 할 수가 없습니다[...] |
|
위로 |
|
|
진민식
가입: 2006년 3월 21일 올린 글: 67
|
올려짐: 2006년5월5일 1:46 주제: |
|
|
인용: | k = &y 라는 구문을 만나면
3 k y
3 k 1 중 무엇이 추가되어야 할까요? |
제가 드린 답변은 C-- symantics가 모범답안에 따른다고
가정했을 때의 얘기 입니다. 그렇다면, C--의 메모리는
Loc -> Val 이 되고, Loc = Var 가 됩니다.
즉 2개의 column(Loc, Val)을 가지고 있는 table의 형태가
될 것 입니다.
ex)
Loc Val
x 1
y x
z 2
정찬주님께서 예로 올리신 메모리를 보면,
3 k y
와 같이 정의 하셨습니다.저는 이걸 Mem = (Addr,Var) -> Val
로 이해를 하였습니다.
그래서 3을 address를 의미하는 것으로 쓰셨다면,
그래서 address끼리의 연산을 지원하시겠다고 하신다면,
C--의 semantics를 그에 맞게 수정하셔야 할 것 입니다.
모범답안과 다른 semantics를 생각하고 계신다면,
새롭게 정의한 semantics 가 어떤건지도 명시해주셨으면 합니다.
그래야 test 결과가 제대로 나오는 것인지 알 수 있을 것 같습니다. |
|
위로 |
|
|
|