the art of computer programming 이라는 책을 읽다가 이해가 안

closeyes의 이미지

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주소의 내용물이 바뀌는 이유를 하나씩 설명해주세요.

읽어주셔서 감사하고 이렇게 훌륭한 사이트에 이런 질문 올려서 죄송합니다

cinsk의 이미지

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 |

가 됩니다.

도움이 되었기를..

gurugio의 이미지

어.. 책을 읽어보지 않아서 잘은 모르겠습니다만..

일단 left hand는요 시작지점이고 right hand는 끝지점입니다.

예를 들어 25 이면 2가 2번 바이트부터 5번 바이트까지를 지정한다는

이야기입니다.

그리고 바꿀때는 레지스터의 좌측 바이트부터 바꾸는 것이 아니라

우측 바이트부터 바꿉니다.

그래서 .. 아 다른 분께서 답을 달아주셨네요.

여하튼 right most가 least significant 가 아닌것 같네요.

인텔하고는 반대인것 같습니다.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.