the art of computer programming 이라는 책을 읽다가 이해가 안
BASIC CONCETS
1.3. MIX
1.3.1. Description of MIX
워드를 구성하는 부분영역들.
다섯개의 byte와 음수,양수 기호가 아래와 같이 숫자로 매겨져 있습니다.
0 1 2 3 4 5
+- Byte Byte Byte Byte Byte
거의 모든 명령들은 프로그래머에게 워드의 부분만을 골라 사용할 수 있도록 하는 여지를 남겨둡니다.이런 몇몇 경우에 예외적인 "영역표시(field specification)" 를 표기합니다.정보를 의미할 수 있는 가장 작은 단위인 워드의 관점에서 본다면,사용하기 적당한 영역은 연결되있어야 합니다.그리고 영역표시는 (L:R) 로 표기합니다.L은 왼쪽 영역이 가지고 있는 수이며 , R은 오른쪽 영역이 가지고 있는 수입니다.아래는 영역의 표시의 예입니다.
(0:0),+-기호만.
(0:2),+-기호와 처음의 두바이트.
(0:5),워드전체;거의 대부분의 영역표시.
(1:5),+-기호를 제외한 워드전체.
(4:4),4번째 바이트만.
(4:5),두개의 가장 작은 기호 바이트.
영역표시를 사용하게 됨으로써 명령은 매우 미세하게 나눠집니다.그리고 명령이 적용되어야 하는 영역이 어디인지 자세하게 알려줍니다.각각의 영역표시(L:R)은 실제로 8L + R 숫자로 기계 내부를 표기하게되는데;이 숫자는 하나의 바이트를 손쉽게 채웁니다.
Storing operators.
examples : Suppose that location 2000 contains
- 1 2 3 4 5
and register A contains
+ 6 7 8 9 0
Then :
Instruction | Contents of location 2000 afterwards
STA 2000 | + | 6 | 7 | 8 | 9 | 0 |
STA 2000(1:5) | - | 6 | 7 | 8 | 9 | 0 |
STA 2000(5:5) | - | 1 | 2 | 3 | 4 | 0 |
STA 2000(2:2) | - | 1 | 0 | 3 | 4 | 5 |
STA 2000(2:3) | - | 1 | 9 | 0 | 4 | 5 |
STA 2000(0:1) | + | 1 | 2 | 3 | 4 | 5 |
명령에 따라 메모리의 위치 2000에 있는 내용이 달라지는데 그 달라지는 게 영역 표시에 의해서 바뀌자나요.
그런데 저는 왜 저렇게 바뀌는지 이해가 안됩니다.
책에는 L은 "the number of the left-hand part"
R은 "the number of the right-hand part"라고 써져있는데 단순히 숫자는 아닌거 같은데 정확하게 이해가 안됩니다.
책 읽어보신 분이 위에 STA 명령에 따라 2000주소의 내용물이 바뀌는 이유를 하나씩 설명해주세요.
읽어주셔서 감사하고 이렇게 훌륭한 사이트에 이런 질문 올려서 죄송합니다
MIX에서 basic data type은 word이며, 한 word는 5
MIX에서 basic data type은 word이며, 한 word는 5 byte + sign bit라고 가정하면, (sign byte로 보는게 편하겠군요.) 한 word는 다음과 같이 나타낼 수 있습니다:
| - | 1 | 3 | 5 | 7 | 9 |
0번째 byte는 부호가 저장되어 있고, 1번째 byte에는 '1'이, 2번째 byte에는 '3'이, 이런 식으로 저장되는 형태입니다. 각 byte는 최소 100개의 다른 수치를 저장할 수 있습니다.
STA address(M:N)의 형식은 register A의 rightmost (N - M + 1) 바이트를 'address' 번지의 M-N byte 위치에 쓰라는 명령입니다.
reg. A = | + | 6 | 7 | 8 | 9 | 0 |
2000 = | - | 1 | 2 | 3 | 4 | 5 |
"STA 2000(2:3)"을 예로 들어 보겠습니다. 여기서 M은 2이고 N는 3입니다.
N - M + 1 = 3 - 2 + 1= 2이므로, register A의 오른쪽 2바이트(즉 위의 예에서는 "| 9 | 0 |"이 되겠죠.)를 2000번지의 2-3바이트 위치 (즉, register A의 "| 2 | 3 |"값이 들어 있는 곳)에 쓰라는 뜻이므로, 2000번지에는
| - | 1 | 9 | 0 | 4 | 5 |
가 됩니다.
도움이 되었기를..
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
Korean Ver: http://cinsk.github.io/cfaqs/
어.. 책을 읽어보지 않아서 잘은 모르겠습니다만..일단 left
어.. 책을 읽어보지 않아서 잘은 모르겠습니다만..
일단 left hand는요 시작지점이고 right hand는 끝지점입니다.
예를 들어 25 이면 2가 2번 바이트부터 5번 바이트까지를 지정한다는
이야기입니다.
그리고 바꿀때는 레지스터의 좌측 바이트부터 바꾸는 것이 아니라
우측 바이트부터 바꿉니다.
그래서 .. 아 다른 분께서 답을 달아주셨네요.
여하튼 right most가 least significant 가 아닌것 같네요.
인텔하고는 반대인것 같습니다.
댓글 달기