Little Man Computer • When your program gets “translated to machine code” all 0’s & 1’s • The translator must know the language of the program (java) as well as the language of the cpu – “the instruction set” • LMC is a simple instruction set for “toy” computer About The LMC • It is a model/illustration of a computer • Created by Dr. Stuart Madnick at MIT in 1965 (he updated it in 1979) • A fairly accurate representation of how computers still work today. Calculations and other operations performed by: CPU (Central Processing Unit) LMC Model LMC Schematic 123 456 00 01 02 03 04 05 95 96 97 98 99 789 05 123 500 199 500 399 123 System Counterparts ALU Input/output interface 123 456 00 01 02 03 04 05 123 500 199 500 399 Control unit 95 96 97 98 99 789 123 05 Program counter System Block Diagram CPU ALU Input/output interface Memory Control unit Program counter LMC Instruction Set • Layout of Instructions • 3 digits (use decimal; idea is similar in binary) • Think of memory as storage locations – mailboxes that can hold one slip of paper with 3 digits LMC Instruction Set • Interpretation of the 3 digit – 1st digit = instruction called the operation code op code for short – 2nd and 3rd digits mailbox address (for the most part) – eg. – 225 means “store into mailbox 25” LMC Instruction Set 1 Load 2 Store Reverse of Store: walks to the mbox specified, copies the instruction on the slip of paper and takes it to the calculator and punches the number in. walk to calculator, reads the number there, and writes the number on a slip of paper, walks to the mbox specified in the instruction, and puts this slip of paper there (replacing any paper already there LMC Instruction Set 3 4 5 Add walk to mailbox address specified and read the number there; walk to calculator and adds it to the number already in the calculator Subtract similar to add but subtracts Input walks to the in box and picks up the slip of paper having a 3-digit number on it; walks over to the calculator and enters that number LMS Instruction Set 6 Output 7 Halt 800 Skip if Negative walk to calculator, reads the number there, and writes the number on a slip of paper, walks to the out box and puts this slip of paper there stop walk to calculator; if the value is less than zero then walk to prog. counter and add one to the current value LMS Instruction Set 801 Skip If Zero walk to calculator; if the value is zero then walk to prog. counter and add one to the current value 802 Skip If walk to calculator; if the value is Positive greater than zero then walk to prog. counter and add one to the current value 9 Jump Tells LMC to change the program counter to the number shown on the address portion A program to add 2 numbers 00 01 02 03 04 05 99 500 299 500 399 600 700 input store data input add output stop data A program to find positive difference of 2 numbers 00 01 02 03 04 05 06 07 08 09 10 11 12 Input Store 11 Input Store 12 Subtract 11 Skp if Neg Jmp 09 Load 11 Subtract 12 Output Halt Data Data 500 211 500 212 411 800 909 111 412 600 700 000 000 Fetch, (Decode,) Execute Instruction Cycle • Fetch: get the next instruction as indicated by the program counter: goes to mbox address and reads the 3 digit code (the instruction) and then increments the program counter • Decode: electronically decode the instruction to determine which operation to perform (not shown in LMC) • Execute: perform the instruction • Repeat cycle until halt