Introduction to LMC 황선태 국민대학교컴퓨터공학부
Layout of the Little Man Computer 10 12 123 00 01 02 03 97 98 99
Mailboxes 100 개의박스가있는데각박스에는 00 에서 99 까지의주소가할당되어있고그안에는 3 자리숫자가써있는종이한장이들어있다 이때각메일박스의내용과주소는같은개념이아니므로혼동하면안된다 Calculator 3 자리의숫자를입력해서더하거나빼는계산가능하다 숫자를입력하면액정에표시되므로다른숫자를새로입력하거나계산하기전까지는기억이가능하다 00 01 02 03 97 98 99 123
Hand counter Little Man 은이카운터를클릭해서값을하나증가시키거나옆에있는레버를돌려서원하는값으로바꿀수도있다 반면외부에서는리셋해서값을 0 으로만들수있다 Baskets 외부와대화하는유일한방법이다 3 자리숫자가써있는종이를놓거나가져올수있다 바구니가여러개있으므로주소를표시해주어야하고바구니에따라서는종이를놓기만하거나꺼내오기만하는것으로기능의방향이고정될수도있다 10 12
Little Man Operation Little Man 은메일박스에있는종이에기록된 3 자리숫자를다음과같이이해하고미리약속한대로실행한다 3 2 5 Instruction Address 3 자리숫자중한자리는명령으로쓰고나머지두자리는메일박스또는바구니의주소를지정하는데쓴다 이명령을 Operation code 또는 OP code 라고한다
Little Man 을위한명령어들 (1) Instruction 1 Load Little Man 은 instruction 에있는 address 의 mailbox 로가서그안에있는 3 자리숫자를읽어서 calculator 에입력한다 기존에 calculator 에있던숫자는없어지고 mailbox 에있던숫자는그대로있다 Instruction 2 Store Little Man 은 calculator 에있는 3 자리숫자를읽어서 instruction 에있는 address 의 mailbox 에있는종이위에쓴다 기존에 mailbox 에있던숫자는지워진다 하지만기존에 calculator 에있던숫자는그대로있다 Instruction 3 Add Little Man 은 instruction 에있는 address 의 mailbox 에서숫자를읽어서이숫자를 calculator 에이미있는숫자와더한다 calculator 에는이전의값은없어지고더한결과가남아있게된다
Little Man 을위한명령어들 (2) Instruction 4 Subtract Add 와비슷하다 Instruction 5 Input Little Man 은주소에씌인 basket 으로가서종이하나를집어들고 ( 여러개가있으면먼저들어온것 ) 거기에쓰인숫자를 calculator 에입력한다 Instruction 6 Output Little Man 은 calculator 에있는내용을종이에써서주소의 basket 위에얹어놓는다 기존에 calculator 에있던값은바뀌지않는다 Instruction 7 Coffee Break (or Halt) Little Man 은휴식을취한다
Simple Program(1) 510 299 510 399 612 700 위의숫자들은 Little Man 에게어떤의미를갖는가?
Simple Program(2) 사람에게는단순한 6 개수의나열이지만 Little Man Computer 는위의숫자들을다음과같은일련의명령으로인식한다 두개의수를입력받아더해서출력하는프로그램 Code LMC Description (for Human) 510 299 510 399 612 700 Instruction 5 Instruction 2 Instruction 5 Instruction 3 Instruction 6 Instruction 7 Input 10 Store 99 Input 10 Add 99 Output 12 Coffee Break
An Extended Instruction Set Instruction 8 Skip on Condition Little Man 은 calculator 에있는값을읽어서그값이어떤조건을만족하면바로다음명령을건너뛴다 만약에조건이만족하지않으면평소와같이바로다음명령을수행한다 이명령은 address 부분을이용하는데주소지정을위한것이아니라 Little Man 에게조건을알려주기위해사용된다 다음과같이조건을약속할수있다 Address digits (Condition ID) Condition 01 Skip if result in calculator is zero 02 Skip if result in calculator is zero or positive 03 Skip if result in calculator is negative
An Extended Instruction Set(2) Instruction 9 Jump Little Man 은다음명령대신에 address 부분에서가리키는곳에있는명령을실행한다 이는 Hand counter 의값을 address 부분에있는값으로바꿈으로써구현된다 Instruction 0 Nop 000 에대해서는특별히정의하는데아무일도하지않고다음명령어로넘어가도록한다
Little Man 에게일시키기 1 2 3 4 5 6 7 while (value==0) { /* Do something */ } /* Next Statement */ # Addr Code Description 1 2 3 45 190 90 is assumed to contain value 4 46 491 0 is stored at 91 5 47 801 Skip if the value is zero 6 48 960 Exit loop; Jump to /* Next Statement */ 7 49 /* Do something */ 8 59 945 End of /* Do something */; loop test again 9 10 60 /* Next Statement */
Mnemonic 편의를위해서각 instruction 을위해서영문약자를사용하는데이를니모닉 (Mnemonics) 이라고한다 이는 Little Man 이이해할수있는것이아니라단지사람이읽고이해하기편하게하려고전한것이다 대부분의프로그램은 mnemonic 을사용하여표시하고 comment 가뒤따른다
Little Man mnemonic instruction codes Mnemonic Description LDA Load STA Store ADDA Add SUBA Subtract IN Input OUT Output COB or HLT Coffee break (or Halt) SKZ Skip if zero (code 801) SKP Skip if positive or zero (code 802) SKN Skip if negative (code 803) JMP Jump BOX Locate data on storage
Sample Program // positive difference of two numbers IN 10 STA 11 IN 10 STA 12 SUBA 11 SKN test JMP 09 positive already; Goto print LDA 11 negative; reverse order SUBA 12 OUT 12 print result and COB stop BOX 0 used for data BOX 0 used for data 510 211 510 212 411 801 909 111 412 612 700 000 000
The Instruction Cycle Instruction cycle 은두부분으로나눌수있다 1 fetch The Little Man finds out what instruction he is to execute 2 execute He actually performs the work specified in the instruction
Fetch 1) Little Man 은 Hand Counter 에서값을읽는다 2) Hand Counter 가가리키는 Mailbox 의쪽으로가서 3) 그안에있는종이의값을읽는다 ( 나중을위해서그종이는다시넣어놓는다 )
Execute 1) 앞에서 fetch 한명령어의쓰인 Mailbox 의주소로간다 2) 그 Mailbox 의종이에쓰인숫자를읽고나중에필요할때를대비해서기억한다
Execute(2) 3) 계산기쪽으로와서기억한값을입력한다 4) Hand Counter 로와서 counter 를클릭한다
von Neumann architecture 오늘날의컴퓨터는모두가 1945-1951 에 von Neumann 이제시한 architecture 를기본으로하고있다 Von Neumann 아키텍쳐의주요특징은다음과같다 1 Stored program concept: Memory holds both programs and data 2 Linear addressing: There is a single sequential numeric address for each and every memory location 3 Location addressing: Memory is addressed by location number without regard to the data contained within 4 Sequential execution: Instructions are executed sequentially unless an instruction or an outside event (such as the user resetting the location counter) causes a branch to occur