Elements of Computing Systems, Nisan & Schocken, MIT Press, www.nand2tetris.org, Chapter 4: Machine Language slide 1www.nand2tetris.org Building a Modern.

Slides:



Advertisements
Similar presentations
Chapter 4: Machine Language
Advertisements

Instruction Set Design
Chapter 10- Instruction set architectures
Slide 1CPU Emulator Tutorial This program is part of the software suite that accompanies the book The Digital Core, by Noam Nisan and Shimon Schocken 2003,
The CPU Revision Typical machine code instructions Using op-codes and operands Symbolic addressing. Conditional and unconditional branches.
Elements of Computing Systems, Nisan & Schocken, MIT Press, 2005, Chapter 5: Computer Architecture slide 1www.idc.ac.il/tecs Chapter.
The Elements of Computing Systems
Execution of an instruction
Assembly Language Programming. CPU The CPU contains a Control Unit, Arithmetic Logic Unit (ALU) and a small number of memory locations called Registers.
Chapter 7 Low-Level Programming Languages. 2 Chapter Goals List the operations that a computer can perform Discuss the relationship between levels of.
Henry Hexmoor1 Chapter 10- Control units We introduced the basic structure of a control unit, and translated assembly instructions into a binary representation.
Computer ArchitectureFall 2007 © Sep 10 th, 2007 Majd F. Sakr CS-447– Computer Architecture.
Chapters 4 & 5: LC-3 Computer Architecture Machine Instructions Assembly language Programming in Machine and Assembly Language.
Elements of Computing Systems, Nisan & Schocken, MIT Press, 2005, Chapter 8: VM II: Program Control slide 1www.idc.ac.il/tecs Chapter.
Elements of Computing Systems, Nisan & Schocken, MIT Press, 2005, Chapter 7: VM I: Stack Arithmetic slide 1www.idc.ac.il/tecs Chapter.
Elements of Computing Systems, Nisan & Schocken, MIT Press, 2005, Introduction: Hello, World Below slide 1www.idc.ac.il/tecs Introduction:
Elements of Computing Systems, Nisan & Schocken, MIT Press, 2005, Chapter 10: Compiler I: Syntax Analysis slide 1www.idc.ac.il/tecs.
Elements of Computing Systems, Nisan & Schocken, MIT Press, Chapter 10: Compiler I: Syntax Analysis slide 1www.idc.ac.il/tecs Compiler.
Elements of Computing Systems, Nisan & Schocken, MIT Press, Chapter 7: Virtual Machine I: Stack Arithmetic slide 1www.nand2tetris.org.
Elements of Computing Systems, Nisan & Schocken, MIT Press, Chapter 7: Virutal Machine, Part I slide 1www.idc.ac.il/tecs Virtual Machine.
Elements of Computing Systems, Nisan & Schocken, MIT Press, Chapter 4: Machine Language slide 1www.idc.ac.il/tecs Machine Language.
Elements of Computing Systems, Nisan & Schocken, MIT Press, Chapter 6: Assembler slide 1www.idc.ac.il/tecs Assembler Elements of Computing.
Elements of Computing Systems, Nisan & Schocken, MIT Press, Chapter 5: Computer Architecture slide 1www.idc.ac.il/tecs Computer Architecture.
Elements of Computing Systems, Nisan & Schocken, MIT Press, Chapter 5: Computer Architecture slide 1www.nand2tetris.org Building a.
IT253: Computer Organization Lecture 4: Instruction Set Architecture Tonga Institute of Higher Education.
Slide 1/22Assembler Tutorial, Index This program is part of the software suite that accompanies the book The Elements of Computing.
Computer Architecture and the Fetch-Execute Cycle
Cosc 2150: Computer Organization
CSC 3210 Computer Organization and Programming Chapter 1 THE COMPUTER D.M. Rasanjalee Himali.
Building a Modern Computer From First Principles
Elements of Computing Systems, Nisan & Schocken, MIT Press, 2005, Chapter 11: Compiler II: Code Generation slide 1www.idc.ac.il/tecs.
Elements of Computing Systems, Nisan & Schocken, MIT Press, Chapter 8: Virtual Machine, Part II slide 1www.nand2tetris.org Building.
Elements of Computing Systems, Nisan & Schocken, MIT Press, Chapter 1: Compiler II: Code Generation slide 1www.nand2tetris.org Building.
Elements of Computing Systems, Nisan & Schocken, MIT Press, Chapter 11: Compiler II: Code Generation slide 1www.nand2tetris.org Building.
Elements of Computing Systems, Nisan & Schocken, MIT Press, Chapter 7: Virutal Machine, Part I slide 1www.nand2tetris.org Building.
Lecture 4: MIPS Instruction Set Reminders: –Homework #1 posted: due next Wed. –Midterm #1 scheduled Friday September 26 th, 2014 Location: TODD 430 –Midterm.
Execution of an instruction
Elements of Computing Systems, Nisan & Schocken, MIT Press, Chapter 10: Compiler I: Syntax Analysis slide 1www.nand2tetris.org Building.
Elements of Computing Systems, Nisan & Schocken, MIT Press, Chapter 10: Compiler I: Syntax Analysis slide 1www.nand2tetris.org Building.
1 Text Reference: Warford. 2 Computer Architecture: The design of those aspects of a computer which are visible to the programmer. Architecture Organization.
Building a Modern Computer From First Principles
September 26, 2001Systems Architecture I1 Systems Architecture I (CS ) Lecture 2: Implementation of a Simplified Computer Jeremy R. Johnson Wednesday,
UConn CSE CSE241: Instruction Level Architecture Base CPU/Memory Architecture Registers Fetch-Execute Cycle Instructions Addressing Modes.
The von Neumann Model – Chapter 4 COMP 2620 Dr. James Money COMP
Elements of Computing Systems, Nisan & Schocken, MIT Press, Chapter 7: Virutal Machine, Part I slide 1www.nand2tetris.org Building.
Digital Computer Concept and Practice Copyright ©2012 by Jaejin Lee Control Unit.
Elements of Computing Systems, Nisan & Schocken, MIT Press, Chapter 6: Assembler slide 1www.nand2tetris.org Building a Modern Computer.
Processor Fundamentals Assembly Language. Learning Objectives Show understanding of the relationship between assembly language and machine code, including.
Elements of Computing Systems, Nisan & Schocken, MIT Press, Chapter 4: Machine Language slide 1www.nand2tetris.org Building a Modern.
Computer Organization Instructions Language of The Computer (MIPS) 2.
1 Basic Processor Architecture. 2 Building Blocks of Processor Systems CPU.
Jeremy R. Johnson William M. Mongan
Digital Computer Concept and Practice Copyright ©2012 by Jaejin Lee Control Unit.
CS 270: Mathematical Foundations of Computer Science
Introduction: From Nand to Tetris
Control Unit Lecture 6.
Virtual Machine Part I: Stack Arithmetic
Virtual Machine Emulator Tutorial
Instructions for Making Decisions
Lecture 4: MIPS Instruction Set
Systems Architecture I (CS ) Lecture 2: A Simplified Computer
Instruction encoding We’ve already seen some important aspects of processor design. A datapath contains an ALU, registers and memory. Programmers and compilers.
CPU Emulator Tutorial This program is part of the software suite
Introduction to Micro Controllers & Embedded System Design
Other ISAs Next, we’ll first we look at a longer example program, starting with some C code and translating it into our assembly language. Then we discuss.
Other ISAs Next, we’ll first we look at a longer example program, starting with some C code and translating it into our assembly language. Then we discuss.
Instruction encoding We’ve already seen some important aspects of processor design. A datapath contains an ALU, registers and memory. Programmers and compilers.
Introduction to Computer Systems
Computer Systems An Introducton.
Computer Architecture Assembly Language
Presentation transcript:

Elements of Computing Systems, Nisan & Schocken, MIT Press, Chapter 4: Machine Language slide 1www.nand2tetris.org Building a Modern Computer From First Principles Machine (Assembly) Language

Elements of Computing Systems, Nisan & Schocken, MIT Press, Chapter 4: Machine Language slide 2www.nand2tetris.org Where we are at: Assembler Chapter 6 H.L. Language & Operating Sys. abstract interface Compiler Chapters VM Translator Chapters Computer Architecture Chapters Gate Logic Chapters Electrical Engineering Physics Virtual Machine abstract interface Software hierarchy Assembly Language abstract interface Hardware hierarchy Machine Language abstract interface Hardware Platform abstract interface Chips & Logic Gates abstract interface Human Thought Abstract design Chapters 9, 12

Elements of Computing Systems, Nisan & Schocken, MIT Press, Chapter 4: Machine Language slide 3www.nand2tetris.org Machine language Abstraction – implementation duality: Machine language ( = instruction set) can be viewed as a programmer- oriented abstraction of the hardware platform The hardware platform can be viewed as a physical means for realizing the machine language abstraction

Elements of Computing Systems, Nisan & Schocken, MIT Press, Chapter 4: Machine Language slide 4www.nand2tetris.org Machine language Abstraction – implementation duality: Machine language ( = instruction set) can be viewed as a programmer- oriented abstraction of the hardware platform The hardware platform can be viewed as a physical means for realizing the machine language abstraction Another duality: Binary version: (machine code) Symbolic versionADD R1, R2, R3 (assembly)

Elements of Computing Systems, Nisan & Schocken, MIT Press, Chapter 4: Machine Language slide 5www.nand2tetris.org Machine language Abstraction – implementation duality: Machine language ( = instruction set) can be viewed as a programmer- oriented abstraction of the hardware platform The hardware platform can be viewed as a physical means for realizing the machine language abstraction Another duality: Binary version Symbolic version Loose definition: Machine language = an agreed-upon formalism for manipulating a memory using a processor and a set of registers Same spirit but different syntax across different hardware platforms. ALU combinational Memory state

Elements of Computing Systems, Nisan & Schocken, MIT Press, Chapter 4: Machine Language slide 6www.nand2tetris.org Lecture plan Machine languages at a glance The Hack machine language: Symbolic version Binary version Perspective (The assembler will be covered in chapter 6).

Elements of Computing Systems, Nisan & Schocken, MIT Press, Chapter 4: Machine Language slide 7www.nand2tetris.org Typical machine language commands (3 types) ALU operations Memory access operations (addressing mode: how to specify operands) Immediate addressing, LDA R1, 67 // R1=67 Direct addressing, LD R1, 67 // R1=M[67] Indirect addressing, LDI R1, R2 // R1=M[R2] Flow control operations

Elements of Computing Systems, Nisan & Schocken, MIT Press, Chapter 4: Machine Language slide 8www.nand2tetris.org Typical machine language commands (a small sample) // In what follows R1,R2,R3 are registers, PC is program counter, // and addr is some value. ADD R1,R2,R3 // R1  R2 + R3 ADDI R1,R2,addr // R1  R2 + addr AND R1,R1,R2 // R1  R1 and R2 (bit-wise) JMP addr // PC  addr JEQ R1,R2,addr // IF R1 == R2 THEN PC  addr ELSE PC++ LOAD R1, addr // R1  RAM[addr] STORE R1, addr // RAM[addr]  R1 NOP // Do nothing // Etc. – some command variants // In what follows R1,R2,R3 are registers, PC is program counter, // and addr is some value. ADD R1,R2,R3 // R1  R2 + R3 ADDI R1,R2,addr // R1  R2 + addr AND R1,R1,R2 // R1  R1 and R2 (bit-wise) JMP addr // PC  addr JEQ R1,R2,addr // IF R1 == R2 THEN PC  addr ELSE PC++ LOAD R1, addr // R1  RAM[addr] STORE R1, addr // RAM[addr]  R1 NOP // Do nothing // Etc. – some command variants

Elements of Computing Systems, Nisan & Schocken, MIT Press, Chapter 4: Machine Language slide 9www.nand2tetris.org The Hack computer A 16-bit machine consisting of the following elements: Data memory: RAM – an addressable sequence of registers Instruction memory: ROM – an addressable sequence of registers Registers: D, A, M, where M stands for RAM[A] Processing: ALU, capable of computing various functions Program counter: PC, holding an address Control: The ROM is loaded with a sequence of 16-bit instructions, one per memory location, beginning at address 0. Fetch-execute cycle: later Instruction set: Two instructions: A-instruction, C-instruction.

Elements of Computing Systems, Nisan & Schocken, MIT Press, Chapter 4: Machine Language slide 10www.nand2tetris.org The Hack computer A 16-bit machine consisting of the following elements:

Elements of Computing Systems, Nisan & Schocken, MIT Press, Chapter 4: Machine Language slide 11www.nand2tetris.org The Hack computer A 16-bit machine consisting of the following elements: Both memory chips are 16-bit wide and have 15-bit address space.

Elements of Computing Systems, Nisan & Schocken, MIT Press, Chapter 4: Machine Language slide 12www.nand2tetris.org The Hack computer A 16-bit machine consisting of the following elements:

Elements of Computing Systems, Nisan & Schocken, MIT Press, Chapter 4: Machine Language slide 13www.nand2tetris.org The value // A  value Where value is either a number or a symbol referring to some number. Used for: Entering a constant value ( A = value // A = 17 D = A // D = // A = 17 D = A // D = 17 Coding // A = 17 D = M // D = // A = 17 D = M // D = RAM[17] Selecting a RAM location ( register = RAM[A] // A = 17 JMP // fetch the instruction // stored in // A = 17 JMP // fetch the instruction // stored in ROM[17] Selecting a ROM location ( PC = A ) Why A-instruction? It is impossible to pack both addr and instr into 16 bits.

Elements of Computing Systems, Nisan & Schocken, MIT Press, Chapter 4: Machine Language slide 14www.nand2tetris.org The C-instruction (first approximation) Exercise: Implement the following tasks using Hack commands:  Set D to A-1  Set both A and D to A + 1  Set D to 19  Set both A and D to A + D  Set RAM[5034] to D - 1  Set RAM[53] to 171  Add 1 to RAM[7], and store the result in D. dest = x + y dest = x - y dest = x dest = 0 dest = 1 dest = -1 dest = x + y dest = x - y dest = x dest = 0 dest = 1 dest = -1 x = {A, D, M} y = {A, D, M, 1} dest = {A, D, M, MD, AM, AD, AMD, null}

Elements of Computing Systems, Nisan & Schocken, MIT Press, Chapter 4: Machine Language slide 15www.nand2tetris.org The C-instruction (first approximation) Exercise: Implement the following tasks using Hack commands: 1. Set D to A-1 2. Set both A and D to A Set D to Set both A and D to A + D 5. Set RAM[5034] to D Set RAM[53] to Add 1 to RAM[7], and store the result in D. 1. D = A-1 2. AD=A+1 D=A 4. AD=A+D M=D-1 M=D D=M+1

Elements of Computing Systems, Nisan & Schocken, MIT Press, Chapter 4: Machine Language slide 16www.nand2tetris.org The C-instruction (first approximation) j 3012 sum 4500 q 3812 arr j 3012 sum 4500 q 3812 arr Symbol table: (All symbols and values are arbitrary examples) Exercise: Implement the following tasks using Hack commands:  sum = 0  j = j + 1  q = sum + 12 – j  arr[3] = -1  arr[j] = 0  arr[j] = 17  etc. dest = x + y dest = x - y dest = x dest = 0 dest = 1 dest = -1 dest = x + y dest = x - y dest = x dest = 0 dest = 1 dest = -1 x = {A, D, M} y = {A, D, M, 1} dest = {A, D, M, MD, AM, AD, AMD, null}

Elements of Computing Systems, Nisan & Schocken, MIT Press, Chapter 4: Machine Language slide 17www.nand2tetris.org The C-instruction (first approximation) Exercise: Implement the following tasks using Hack commands: 1. sum = 0 2. j = j q = sum + 12 – j 4. arr[3] = arr[j] = 0 6. arr[j] = etc. M=0 M=M+1 M=D A=D+A M=-1 A=A+D M=0 A=M M=D

Elements of Computing Systems, Nisan & Schocken, MIT Press, Chapter 4: Machine Language slide 18www.nand2tetris.org Control (focus on the yellow chips only) ALU Mux D A/M a-bit D register A register A M RAM (selected register) ROM (selected register) PC Instruction In the Hack architecture: ROM = instruction memory Program = sequence of 16-bit numbers, starting at ROM[0] Current instruction = ROM[PC] To select instruction n from the ROM, we set A to n, using the address input

Elements of Computing Systems, Nisan & Schocken, MIT Press, Chapter 4: Machine Language slide 19www.nand2tetris.org Coding examples (practice) Exercise: Implement the following tasks using Hack commands:  goto 50  if D==0 goto 112  if D<9 goto 507  if RAM[12] > 0 goto 50  if sum>0 goto END  if x[i]<=0 goto NEXT. sum 2200 x 4000 i 6151 END 50 NEXT 120 sum 2200 x 4000 i 6151 END 50 NEXT 120 Symbol table: (All symbols and values in are arbitrary examples) Hack commands: A // set A to value C -command: dest = comp ; jump // dest = and ;jump // are optional Where: comp = 0, 1, -1, D, A, !D, !A, -D, -A, D+1, A+1, D-1, A-1, D+A, D-A, A-D, D&A, D|A, M, !M, -M, M+1, M-1, D+M, D-M, M-D, D&M, D|M dest = M, D, A, MD, AM, AD, AMD, or null jump = JGT, JEQ, JGE, JLT, JNE, JLE, JMP, or null In the command dest = comp; jump, the jump materialzes if (comp jump 0) is true. For example, in D=D+1,JLT, we jump if D+1 < 0. Hack commands: A // set A to value C -command: dest = comp ; jump // dest = and ;jump // are optional Where: comp = 0, 1, -1, D, A, !D, !A, -D, -A, D+1, A+1, D-1, A-1, D+A, D-A, A-D, D&A, D|A, M, !M, -M, M+1, M-1, D+M, D-M, M-D, D&M, D|M dest = M, D, A, MD, AM, AD, AMD, or null jump = JGT, JEQ, JGE, JLT, JNE, JLE, JMP, or null In the command dest = comp; jump, the jump materialzes if (comp jump 0) is true. For example, in D=D+1,JLT, we jump if D+1 < 0. Hack convention:  True is represented by -1  False is represented by 0

Elements of Computing Systems, Nisan & Schocken, MIT Press, Chapter 4: Machine Language slide 20www.nand2tetris.org Coding examples (practice) Exercise: Implement the following tasks using Hack commands: 1. goto if D==0 goto if D<9 goto if RAM[12] > 0 goto if sum>0 goto END 6. if x[i]<=0 goto NEXT. 0; JMP D; JEQ D; JLT D; JGT D: JGT A=A+D D; JLE

Elements of Computing Systems, Nisan & Schocken, MIT Press, Chapter 4: Machine Language slide 21www.nand2tetris.org if condition { code block 1 } else { code block 2 } code block 3 if condition { code block 1 } else { code block 2 } code block 3 High level: D  D;JEQ code block 0;JMP (IF_TRUE) code block 1 (END) code block 3 D  D;JEQ code block 0;JMP (IF_TRUE) code block 1 (END) code block 3 Hack: IF logic – Hack style Hack convention:  True is represented by -1  False is represented by 0

Elements of Computing Systems, Nisan & Schocken, MIT Press, Chapter 4: Machine Language slide 22www.nand2tetris.org WHILE logic – Hack style while condition { code block 1 } Code block 2 while condition { code block 1 } Code block 2 High level: (LOOP) D  D;JNE code block 0;JMP (END) code block 2 (LOOP) D  D;JNE code block 0;JMP (END) code block 2 Hack: Hack convention:  True is represented by -1  False is represented by 0

Elements of Computing Systems, Nisan & Schocken, MIT Press, Chapter 4: Machine Language slide 23www.nand2tetris.org Side note (focus on the yellow chip parts only) ALU Mux D A/M a-bit D register A register A M RAM (selected register) ROM (selected register) PC Instruction address input In the Hack architecture, the A register addresses both the RAM and the ROM, simultaneously. Therefore: Command pairs followed by D=M;someJumpDirective make no sense Best practice: in well-written Hack programs, a C -instruction should contain  either a reference to M, or  a jump directive, but not both.

Elements of Computing Systems, Nisan & Schocken, MIT Press, Chapter 4: Machine Language slide 24www.nand2tetris.org Complete program example // Adds int i = 1; int sum = 0; while (i <= 100){ sum += i; i++; } // Adds int i = 1; int sum = 0; while (i <= 100){ sum += i; i++; } C language code: // Adds // i refers to some RAM location M=1 // // sum refers to some RAM location M=0 // sum=0 D=M // D = D=D-A // D = i - D;JGT // If (i-100) > 0 goto D=M // D = M=D+M // sum += M=M+1 // 0;JMP // Got LOOP 0;JMP // Infinite loop // Adds // i refers to some RAM location M=1 // // sum refers to some RAM location M=0 // sum=0 D=M // D = D=D-A // D = i - D;JGT // If (i-100) > 0 goto D=M // D = M=D+M // sum += M=M+1 // 0;JMP // Got LOOP 0;JMP // Infinite loop Hack assembly code: Demo CPU emulator Hack assembly convention:  Variables: lower-case  Labels: upper-case  Commands: upper-case

Elements of Computing Systems, Nisan & Schocken, MIT Press, Chapter 4: Machine Language slide 25www.nand2tetris.org Symbols in Hack assembly programs Symbols created by Hack programmers and code generators: Label symbols : Used to label destinations of goto commands. Declared by the pseudo command (XXX). This directive defines the symbol XXX to refer to the instruction memory location holding the next command in the program (within the program, XXX is called “label”) Variable symbols : Any user-defined symbol xxx appearing in an assembly program that is not defined elsewhere using the (xxx) directive is treated as a variable, and is “automatically” assigned a unique RAM address, starting at RAM address 16 By convention, Hack programmers use lower-case and upper-case letters for variable names and labels, respectively. Predefined symbols: I/O pointers: The symbols SCREEN and KBD are “automatically” predefined to refer to RAM addresses and 24576, respectively (base addresses of the Hack platform’s screen and keyboard memory maps) Virtual registers: covered in future lectures. VM control registers: covered in future lectures. // Typical symbolic // Hack code, meaning // not M=D A=M D;JGT 0;JMP // Typical symbolic // Hack code, meaning // not M=D A=M D;JGT 0;JMP Q: Who does all the “automatic” assignments of symbols to RAM addresses? A: The assembler, which is the program that translates symbolic Hack programs into binary Hack program. As part of the translation process, the symbols are resolved to RAM addresses. (more about this in future lectures)

Elements of Computing Systems, Nisan & Schocken, MIT Press, Chapter 4: Machine Language slide 26www.nand2tetris.org Perspective Hack is a simple machine language User friendly syntax: D=D+A instead of ADD D,D,A Hack is a “½-address machine”: any operation that needs to operate on the RAM must be specified using two commands: an A -command to address the RAM, and a subsequent C -command to operate on it A Macro-language can be easily developed D=D+M[XXX] followed by D=D+M GOTO YYY followed by 0; JMP A Hack assembler is needed and will be discusses and developed later in the course.