![Page 1: @let@token CENG3420 Computer Organization & …byu/CENG3420/2016Spring/Lab2-1.pdfI Each memory address containing one byte (eightbits). I One instruction or declaration per line 5/21](https://reader033.vdocuments.net/reader033/viewer/2022042806/5f73fe02507402092d1156ea/html5/thumbnails/1.jpg)
CENG3420 Computer Organization & DesignLab 2-1: LC-3b Simulator
Bei Yu
Department of Computer Science and EngineeringThe Chinese University of Hong Kong
Feb. 25, 2016
1 / 21
![Page 2: @let@token CENG3420 Computer Organization & …byu/CENG3420/2016Spring/Lab2-1.pdfI Each memory address containing one byte (eightbits). I One instruction or declaration per line 5/21](https://reader033.vdocuments.net/reader033/viewer/2022042806/5f73fe02507402092d1156ea/html5/thumbnails/2.jpg)
Overview
LC-3b Basis
LC-3b Assembly Examples
LC-3b Simulator
Task
2 / 21
![Page 3: @let@token CENG3420 Computer Organization & …byu/CENG3420/2016Spring/Lab2-1.pdfI Each memory address containing one byte (eightbits). I One instruction or declaration per line 5/21](https://reader033.vdocuments.net/reader033/viewer/2022042806/5f73fe02507402092d1156ea/html5/thumbnails/3.jpg)
Overview
LC-3b Basis
LC-3b Assembly Examples
LC-3b Simulator
Task
3 / 21
![Page 4: @let@token CENG3420 Computer Organization & …byu/CENG3420/2016Spring/Lab2-1.pdfI Each memory address containing one byte (eightbits). I One instruction or declaration per line 5/21](https://reader033.vdocuments.net/reader033/viewer/2022042806/5f73fe02507402092d1156ea/html5/thumbnails/4.jpg)
Assembler & Simulator
I Assembly language – symbolic (MIPS, LC-3b, ...)I Machine language – binary
I Assembler is a program thatI turns symbols into machine instructions.I EX: lc3b asm, SPIM, ...
I Simulator is a program thatI mimics the behavior of a processorI usually in high-level languageI EX: lc3b sim, SPIM, ...
3 / 21
![Page 5: @let@token CENG3420 Computer Organization & …byu/CENG3420/2016Spring/Lab2-1.pdfI Each memory address containing one byte (eightbits). I One instruction or declaration per line 5/21](https://reader033.vdocuments.net/reader033/viewer/2022042806/5f73fe02507402092d1156ea/html5/thumbnails/5.jpg)
LC-3b
I LC-3b: Little Computer 3, b version.I Relatively simple instruction setI Most used in teaching for CS & CEI Developed by Yale Patt@UT & Sanjay J. Patel@UIUC
4 / 21
![Page 6: @let@token CENG3420 Computer Organization & …byu/CENG3420/2016Spring/Lab2-1.pdfI Each memory address containing one byte (eightbits). I One instruction or declaration per line 5/21](https://reader033.vdocuments.net/reader033/viewer/2022042806/5f73fe02507402092d1156ea/html5/thumbnails/6.jpg)
LC-3b Instructions
I 16 bit instructionI Memory address space is 16 bits → 216 locationsI Each memory address containing one byte (eight bits).
I One instruction or declaration per line
5 / 21
![Page 7: @let@token CENG3420 Computer Organization & …byu/CENG3420/2016Spring/Lab2-1.pdfI Each memory address containing one byte (eightbits). I One instruction or declaration per line 5/21](https://reader033.vdocuments.net/reader033/viewer/2022042806/5f73fe02507402092d1156ea/html5/thumbnails/7.jpg)
Overview
LC-3b Basis
LC-3b Assembly Examples
LC-3b Simulator
Task
6 / 21
![Page 8: @let@token CENG3420 Computer Organization & …byu/CENG3420/2016Spring/Lab2-1.pdfI Each memory address containing one byte (eightbits). I One instruction or declaration per line 5/21](https://reader033.vdocuments.net/reader033/viewer/2022042806/5f73fe02507402092d1156ea/html5/thumbnails/8.jpg)
LC-3b Example 1: Do nothing
“./lc3b asm nop.asm nop.cod”
nop.asm:
.ORIG x3000NOPNOP.END
nop.cod:
0x30000x00000x0000
I NOP instruction translates into machine code 0x0000.
6 / 21
![Page 9: @let@token CENG3420 Computer Organization & …byu/CENG3420/2016Spring/Lab2-1.pdfI Each memory address containing one byte (eightbits). I One instruction or declaration per line 5/21](https://reader033.vdocuments.net/reader033/viewer/2022042806/5f73fe02507402092d1156ea/html5/thumbnails/9.jpg)
Assembler Directives
I Directives give information to the assemblerI Not executed by the programI All directives start with a period ‘.’
.ORIG Where to start in placing things in memory
.FILL Declare a memory location (variable)
.END Tells assembly where your program source ends
7 / 21
![Page 10: @let@token CENG3420 Computer Organization & …byu/CENG3420/2016Spring/Lab2-1.pdfI Each memory address containing one byte (eightbits). I One instruction or declaration per line 5/21](https://reader033.vdocuments.net/reader033/viewer/2022042806/5f73fe02507402092d1156ea/html5/thumbnails/10.jpg)
Assembler Directives: .ORIG
I Tells where to put code in memory (starting location)I Only one .ORIG allowed per program moduleI PC is set to this address at start upI Similar to the main() function in CI Example:
.ORIG x3000
8 / 21
![Page 11: @let@token CENG3420 Computer Organization & …byu/CENG3420/2016Spring/Lab2-1.pdfI Each memory address containing one byte (eightbits). I One instruction or declaration per line 5/21](https://reader033.vdocuments.net/reader033/viewer/2022042806/5f73fe02507402092d1156ea/html5/thumbnails/11.jpg)
Assembler Directives: .FILL
I Declaration and initialization of variablesI Always declaring wordsI Examples:
flag .FILL x0001counter .FILL x0002letter .FILL x0041letters .FILL x4241
9 / 21
![Page 12: @let@token CENG3420 Computer Organization & …byu/CENG3420/2016Spring/Lab2-1.pdfI Each memory address containing one byte (eightbits). I One instruction or declaration per line 5/21](https://reader033.vdocuments.net/reader033/viewer/2022042806/5f73fe02507402092d1156ea/html5/thumbnails/12.jpg)
Assembler Directives: .END
I Tells the assembler where your program endsI Only one .END allowed in your program moduleI NOT where the execution stops!
10 / 21
![Page 13: @let@token CENG3420 Computer Organization & …byu/CENG3420/2016Spring/Lab2-1.pdfI Each memory address containing one byte (eightbits). I One instruction or declaration per line 5/21](https://reader033.vdocuments.net/reader033/viewer/2022042806/5f73fe02507402092d1156ea/html5/thumbnails/13.jpg)
LC-3b Example 2: Count from 10 to 1count10.asm:
.ORIG x3000LEA R0, TENLDW R1, R0, #0
START ADD R1, R1, #-1BRZ DONEBR START
DONE TRAP x25TEN .FILL x000A
.END
count10.cod:
0x30000xE0050x62000x127F0x04010x0FFD
0xF0250x000A
I More explanations will be in Lab2-2.
11 / 21
![Page 14: @let@token CENG3420 Computer Organization & …byu/CENG3420/2016Spring/Lab2-1.pdfI Each memory address containing one byte (eightbits). I One instruction or declaration per line 5/21](https://reader033.vdocuments.net/reader033/viewer/2022042806/5f73fe02507402092d1156ea/html5/thumbnails/14.jpg)
Overview
LC-3b Basis
LC-3b Assembly Examples
LC-3b Simulator
Task
12 / 21
![Page 15: @let@token CENG3420 Computer Organization & …byu/CENG3420/2016Spring/Lab2-1.pdfI Each memory address containing one byte (eightbits). I One instruction or declaration per line 5/21](https://reader033.vdocuments.net/reader033/viewer/2022042806/5f73fe02507402092d1156ea/html5/thumbnails/15.jpg)
LC-3b Simulator: lc3b sim
I Download from course website(lab2 assignment.tar.gz)
I The simulator willI Execute the input LC-3b programI one instruction at a timeI Modify the architectural state of the LC-3b
I Two main sections: the shell and the simulation routinesI Only need to work on simulation routine part.
12 / 21
![Page 16: @let@token CENG3420 Computer Organization & …byu/CENG3420/2016Spring/Lab2-1.pdfI Each memory address containing one byte (eightbits). I One instruction or declaration per line 5/21](https://reader033.vdocuments.net/reader033/viewer/2022042806/5f73fe02507402092d1156ea/html5/thumbnails/16.jpg)
LC-3b Shell
./lc3b sim [cod file]
13 / 21
![Page 17: @let@token CENG3420 Computer Organization & …byu/CENG3420/2016Spring/Lab2-1.pdfI Each memory address containing one byte (eightbits). I One instruction or declaration per line 5/21](https://reader033.vdocuments.net/reader033/viewer/2022042806/5f73fe02507402092d1156ea/html5/thumbnails/17.jpg)
LC-3b Architecture State
I Please refer to LC-3b ISA for more detailsI PCI General purpose registers (REGS): 8 registersI Condition codes: N (negative); Z (zero); P (positive).
14 / 21
![Page 18: @let@token CENG3420 Computer Organization & …byu/CENG3420/2016Spring/Lab2-1.pdfI Each memory address containing one byte (eightbits). I One instruction or declaration per line 5/21](https://reader033.vdocuments.net/reader033/viewer/2022042806/5f73fe02507402092d1156ea/html5/thumbnails/18.jpg)
LC-3b Memory Structure
Two word-aligned locations are to store one 16-bit word.I addresses differ only in bit 0I Locations x0006 and x0007 are word-aligned
15 / 21
![Page 19: @let@token CENG3420 Computer Organization & …byu/CENG3420/2016Spring/Lab2-1.pdfI Each memory address containing one byte (eightbits). I One instruction or declaration per line 5/21](https://reader033.vdocuments.net/reader033/viewer/2022042806/5f73fe02507402092d1156ea/html5/thumbnails/19.jpg)
How to use LC-3b Simulator?
1. Compile your C codes through make command.2. Run the compiled LC-3b simulator through ./lc3b sim2
bench/xxx.cod. Here the parameter is a machine codefile.
3. In the simulator, run “n” instructions. When n = 3, run 3
4. In the simulator, print out register information: rdump
16 / 21
![Page 20: @let@token CENG3420 Computer Organization & …byu/CENG3420/2016Spring/Lab2-1.pdfI Each memory address containing one byte (eightbits). I One instruction or declaration per line 5/21](https://reader033.vdocuments.net/reader033/viewer/2022042806/5f73fe02507402092d1156ea/html5/thumbnails/20.jpg)
Overview
LC-3b Basis
LC-3b Assembly Examples
LC-3b Simulator
Task
17 / 21
![Page 21: @let@token CENG3420 Computer Organization & …byu/CENG3420/2016Spring/Lab2-1.pdfI Each memory address containing one byte (eightbits). I One instruction or declaration per line 5/21](https://reader033.vdocuments.net/reader033/viewer/2022042806/5f73fe02507402092d1156ea/html5/thumbnails/21.jpg)
Lab2 Task 1
architectural state:I In process instruction(), update NEXT LATCHES
I At this moment, only update (increase PC value)
memory:I Given CURRENT LATCHES.PC, read related word in
memoryI Implement function int memWord (int startAddr)
17 / 21
![Page 22: @let@token CENG3420 Computer Organization & …byu/CENG3420/2016Spring/Lab2-1.pdfI Each memory address containing one byte (eightbits). I One instruction or declaration per line 5/21](https://reader033.vdocuments.net/reader033/viewer/2022042806/5f73fe02507402092d1156ea/html5/thumbnails/22.jpg)
Task 1 Golden Results: nop.cod
Output after run 2
process_instruction()| curInstr = 0x0000process_instruction()| curInstr = 0x0000
Output after rdump:
Instruction Count : 2PC : 0x3004CCs: N = 0 Z = 1 P = 0Registers:0: 0x00001: 0x00002: 0x00003: 0x00004: 0x00005: 0x00006: 0x00007: 0x0000
18 / 21
![Page 23: @let@token CENG3420 Computer Organization & …byu/CENG3420/2016Spring/Lab2-1.pdfI Each memory address containing one byte (eightbits). I One instruction or declaration per line 5/21](https://reader033.vdocuments.net/reader033/viewer/2022042806/5f73fe02507402092d1156ea/html5/thumbnails/23.jpg)
Task 1 Golden Results: count10.codOutput after run 7:
process_instruction()| curInstr = 0xe005process_instruction()| curInstr = 0x6200process_instruction()| curInstr = 0x127fprocess_instruction()| curInstr = 0x0401process_instruction()| curInstr = 0x0ffdprocess_instruction()| curInstr = 0xf025Simulator halted
Output after rdump:
Instruction Count : 6PC : 0x0000CCs: N = 0 Z = 1 P = 0Registers:0: 0x00001: 0x00002: 0x00003: 0x00004: 0x00005: 0x00006: 0x00007: 0x300c
19 / 21
![Page 24: @let@token CENG3420 Computer Organization & …byu/CENG3420/2016Spring/Lab2-1.pdfI Each memory address containing one byte (eightbits). I One instruction or declaration per line 5/21](https://reader033.vdocuments.net/reader033/viewer/2022042806/5f73fe02507402092d1156ea/html5/thumbnails/24.jpg)
Task 1 Golden Results: toupper.cod
Output after run 18:
process_instruction()| curInstr = 0xe00fprocess_instruction()| curInstr = 0x6000process_instruction()| curInstr = 0x6000process_instruction()| curInstr = 0xe20dprocess_instruction()| curInstr = 0x6240process_instruction()| curInstr = 0x6240process_instruction()| curInstr = 0x2400process_instruction()| curInstr = 0x0406process_instruction()| curInstr = 0x14b0process_instruction()| curInstr = 0x14b0process_instruction()| curInstr = 0x3440process_instruction()| curInstr = 0x1021process_instruction()| curInstr = 0x1261process_instruction()| curInstr = 0x0ff8process_instruction()| curInstr = 0x3440process_instruction()| curInstr = 0xf025Simulator halted
20 / 21
![Page 25: @let@token CENG3420 Computer Organization & …byu/CENG3420/2016Spring/Lab2-1.pdfI Each memory address containing one byte (eightbits). I One instruction or declaration per line 5/21](https://reader033.vdocuments.net/reader033/viewer/2022042806/5f73fe02507402092d1156ea/html5/thumbnails/25.jpg)
Task 1 Golden Results: toupper.cod (cont.)
Output after rdump:
Instruction Count : 16PC : 0x0000CCs: N = 0 Z = 1 P = 0Registers:0: 0x00001: 0x00002: 0x00003: 0x00004: 0x00005: 0x00006: 0x00007: 0x3020
21 / 21