Inf2C - Computer Systems Lectures 3-4 Assembly Language

Similar documents
Lectures 3-4: MIPS instructions

Reminder: tutorials start next week!

ISA: The Hardware Software Interface

CISC 662 Graduate Computer Architecture. Lecture 4 - ISA MIPS ISA. In a CPU. (vonneumann) Processor Organization

CENG3420 Lecture 03 Review

CISC 662 Graduate Computer Architecture. Lecture 4 - ISA

Chapter 2. Instructions: Language of the Computer. Adapted by Paulo Lopes

Chapter 2A Instructions: Language of the Computer

ELEC / Computer Architecture and Design Fall 2013 Instruction Set Architecture (Chapter 2)

Instructions: Language of the Computer

MIPS R-format Instructions. Representing Instructions. Hexadecimal. R-format Example. MIPS I-format Example. MIPS I-format Instructions

Computer Organization and Structure. Bing-Yu Chen National Taiwan University

EEC 581 Computer Architecture Lecture 1 Review MIPS

Instructions: MIPS ISA. Chapter 2 Instructions: Language of the Computer 1

ECE232: Hardware Organization and Design. Computer Organization - Previously covered

Today s topics. MIPS operations and operands. MIPS arithmetic. CS/COE1541: Introduction to Computer Architecture. A Review of MIPS ISA.

Control Instructions. Computer Organization Architectures for Embedded Computing. Thursday, 26 September Summary

Control Instructions

CSCI 402: Computer Architectures. Instructions: Language of the Computer (3) Fengguang Song Department of Computer & Information Science IUPUI.

Lecture 2. Instructions: Language of the Computer (Chapter 2 of the textbook)

COMPSCI 313 S Computer Organization. 7 MIPS Instruction Set

Computer Architecture

Stored Program Concept. Instructions: Characteristics of Instruction Set. Architecture Specification. Example of multiple operands

5/17/2012. Recap from Last Time. CSE 2021: Computer Organization. The RISC Philosophy. Levels of Programming. Stored Program Computers

Recap from Last Time. CSE 2021: Computer Organization. Levels of Programming. The RISC Philosophy 5/19/2011

Branch Addressing. Jump Addressing. Target Addressing Example. The University of Adelaide, School of Computer Science 28 September 2015

Computer Architecture

Chapter 2. Computer Abstractions and Technology. Lesson 4: MIPS (cont )

CS 61c: Great Ideas in Computer Architecture

101 Assembly. ENGR 3410 Computer Architecture Mark L. Chang Fall 2009

CS3350B Computer Architecture MIPS Instruction Representation

Thomas Polzer Institut für Technische Informatik

ENGN1640: Design of Computing Systems Topic 03: Instruction Set Architecture Design

Topic Notes: MIPS Instruction Set Architecture

Chapter 2. Instructions: Language of the Computer. HW#1: 1.3 all, 1.4 all, 1.6.1, , , , , and Due date: one week.

The MIPS Instruction Set Architecture

Computer Organization MIPS ISA

Reduced Instruction Set Computer (RISC)

Computer Science 324 Computer Architecture Mount Holyoke College Fall Topic Notes: MIPS Instruction Set Architecture

CS 61c: Great Ideas in Computer Architecture

Introduction to the MIPS. Lecture for CPSC 5155 Edward Bosworth, Ph.D. Computer Science Department Columbus State University

COMPUTER ORGANIZATION AND DESIGN

EEM 486: Computer Architecture. Lecture 2. MIPS Instruction Set Architecture

Lecture 4: MIPS Instruction Set

MIPS Instruction Set

Chapter 2. Instructions:

comp 180 Lecture 10 Outline of Lecture Procedure calls Saving and restoring registers Summary of MIPS instructions

Instruction Set Architecture. "Speaking with the computer"

Machine Language Instructions Introduction. Instructions Words of a language understood by machine. Instruction set Vocabulary of the machine

Processor. Han Wang CS3410, Spring 2012 Computer Science Cornell University. See P&H Chapter , 4.1 4

Computer Architecture. MIPS Instruction Set Architecture

MIPS%Assembly% E155%

CSE 141 Computer Architecture Spring Lecture 3 Instruction Set Architecute. Course Schedule. Announcements

Computer Architecture. The Language of the Machine

Course Administration

Overview. Introduction to the MIPS ISA. MIPS ISA Overview. Overview (2)

Instructions: Assembly Language

Reduced Instruction Set Computer (RISC)

Instructions: Language of the Computer

MIPS ISA. 1. Data and Address Size 8-, 16-, 32-, 64-bit 2. Which instructions does the processor support

Assembly Language Programming. CPSC 252 Computer Organization Ellen Walker, Hiram College

Rui Wang, Assistant professor Dept. of Information and Communication Tongji University.

Instruction Set Architecture part 1 (Introduction) Mehran Rezaei

Lecture 5: Procedure Calls

CS222: MIPS Instruction Set

CS 61C: Great Ideas in Computer Architecture. MIPS Instruction Formats

Character Is a byte quantity (00~FF or 0~255) ASCII (American Standard Code for Information Interchange) Page 91, Fig. 2.21

Instructions: MIPS arithmetic. MIPS arithmetic. Chapter 3 : MIPS Downloaded from:

Anne Bracy CS 3410 Computer Science Cornell University. See P&H Chapter: , , Appendix B

CS/COE1541: Introduction to Computer Architecture

CENG3420 L03: Instruction Set Architecture

Computer Organization and Components

MIPS Memory Access Instructions

CSE Lecture In Class Example Handout

Unsigned Binary Integers

Unsigned Binary Integers

I-Format Instructions (3/4) Define fields of the following number of bits each: = 32 bits

Mark Redekopp, All rights reserved. EE 357 Unit 11 MIPS ISA

CS3350B Computer Architecture MIPS Introduction

Programmable Machines

Do-While Example. In C++ In assembly language. do { z--; while (a == b); z = b; loop: addi $s2, $s2, -1 beq $s0, $s1, loop or $s2, $s1, $zero

A Processor. Kevin Walsh CS 3410, Spring 2010 Computer Science Cornell University. See: P&H Chapter , 4.1-3

Chapter 2. Instructions: Language of the Computer

Chapter 3 MIPS Assembly Language. Ó1998 Morgan Kaufmann Publishers 1

EE 361 University of Hawaii Fall

ECE468 Computer Organization & Architecture. MIPS Instruction Set Architecture

Programmable Machines

Computer Organization and Structure. Bing-Yu Chen National Taiwan University

ECE232: Hardware Organization and Design

Systems Architecture I

CS31001 COMPUTER ORGANIZATION AND ARCHITECTURE. Debdeep Mukhopadhyay, CSE, IIT Kharagpur. Instructions and Addressing

Chapter 2. Instruction Set Architecture (ISA)

Stored Program Concept. Instructions: Characteristics of Instruction Set. Architecture Specification. Example of multiple operands

MODULE 4 INSTRUCTIONS: LANGUAGE OF THE MACHINE

Computer Science 324 Computer Architecture Mount Holyoke College Fall Topic Notes: MIPS Instruction Set Architecture

EN164: Design of Computing Systems Topic 03: Instruction Set Architecture Design

Chapter 1. Computer Abstractions and Technology. Lesson 3: Understanding Performance

CS3350B Computer Architecture

We will study the MIPS assembly language as an exemplar of the concept.

MIPS Assembly Language. Today s Lecture

Transcription:

Inf2C - Computer Systems Lectures 3-4 Assembly Language Boris Grot School of Informatics University of Edinburgh

Announcements: Labs Purpose: prep for courseworks by getting familiar with the tools reinforce class concepts Regular schedule (from next Wed): Mon 2-3pm Wed 3-4pm Thu 11am-12pm Fri 2-3pm Extras (whenever coursework is out) Mon 5-6pm Thu 12-1pm Fri 10-11am All labs in Appleton Tower 5.04 North Lab Drop-in format You may attend any & all lab sessions Demonstrator (Amna, Traiko, Barbora) on-hand to answer questions Practice lab exercise is online. Inf2C Computer Systems - 2017-2018. Boris Grot 2

Previous lecture Representing numbers Binary encoding Negative numbers Floating point numbers Characters & strings Other things Binary addition Shifting Hex Inf2C Computer Systems - 2017-2018. Boris Grot 4

Lectures 3-4: MIPS instructions Motivation: Learn how a processor s native language looks like We will examine the MIPS ISA ISA: Instruction Set Architecture the language of the computer MIPS: a real-world ISA used by many different processors since the 80s. Regular and representative à great for learning! ISA reference online: http://www.cs.wisc.edu/~larus/hp_appa.pdf Inf2C Computer Systems - 2017-2018. Boris Grot 5

Outline Instruction set Basic arithmetic & logic instructions Processor registers Getting data to/from the memory Control-flow instructions Method calls Inf2C Computer Systems - 2017-2018. Boris Grot 6

Processor instructions Instruction set architecture (ISA): the interface between the software and the hardware Collection of all machine instructions recognized by a particular processor Also, privilege levels, memory management, etc. The ISA abstracts away the hardware details from the programmer Similar to how an object hides its implementation details from its users Enables multiple implementations (called microarchitectures) of the same ISA. Inf2C Computer Systems - 2017-2018. Boris Grot 7

Assembly language Instructions are just strings of binary numbers Example: 00000011110100100000001000001011 For a human, very hard to make out which instruction is which (a sequence of 32-64 bits) Assembly language: symbolic representation of machine instructions Assembly language makes it easy for humans to read and write machine code There is a 1-to-1 mapping between a machine instruction and a corresponding assembly instruction Inf2C Computer Systems - 2017-2018. Boris Grot 8

MIPS assembly: a simple example High-level language (HLL): a[0]=b[0]+10 MIPS assembly language: lw r4,0(r2) # get the value of b[0] from memory # and store it in register r4 add r5,r4,10 # compute b[0]+10 and store into r5 sw r5,0(r1) # store r5 into a[0] Things to notice: Separate instructions to access data (in memory) & operate on it MIPS does not allow to operate on memory directly All instructions have similar format Inf2C Computer Systems - 2017-2018. Boris Grot 9

MIPS arithmetic & logical operations Data processing instructions look like: operation, destination, 1 st operand, 2 nd operand add a,b,c sub a,b,c a = b+c a = b c Bit-wise logical instructions: and, or, xor Shift instructions: sll a,b,shamt srl a,b,shamt sra a,b,shamt a = b << shamt a = b >> shamt (logical) a = b >> shamt (arithmetic) Inf2C Computer Systems - 2017-2018. Boris Grot 10

Registers ISA places restrictions on instruction operands How many operands and where they come from MIPS processors operate on registers only Registers are storage locations inside the processor that hold program variables and control state Registers are generally sized to contain machine s word 32 or 64 bits common today Processors have relatively few programmer-exposed registers MIPS has 32 x86 has 8-16 Inf2C Computer Systems - 2017-2018. Boris Grot 11

MIPS instruction example Assembly: add $s1, $s2, $s3 # $s1 = $s2 + $s3 Binary (R-format used for arithmetic instructions): 6 5 5 5 5 6 op rs rt rd shamt main opcode 1st operand func 2nd result shift sub-function operand opcode number of bits 32 bits à a word 0 18 19 17 0 32 10 add $s1, $s2, $s3 0 18 9 8 0 34 10 sub $t0, $s2, $t1 Remember: each and every assembly instructions translates to exactly 1 machine instruction (no choice or ambiguity) Inf2C Computer Systems - 2017-2018. Boris Grot 12

More on MIPS registers Most registers are available for any use with a few important exceptions Program (C/Java) variables held in regs $s0-$s7 Temporary variables: $t0 $t9 Registers with special roles Register 0 ($zero) is hardwired to 0 Program Counter (PC) holds address of next instruction to be executed it is not a general purpose register Other special-purpose registers exist Inf2C Computer Systems - 2017-2018. Boris Grot 13

Immediate operands What if we need to operate on a constant? Common in arithmetic operations, loop index updates (e.g., i++), or even character manipulations (e.g., changing the case of an ASCII character) MIPS has dedicated instructions with one constant (immediate) operand e.g. addi $r1, $r1, 1 # r1=r1+1 General form: opi $r1, $r2, n Inf2C Computer Systems - 2017-2018. Boris Grot 14

Loading a constant operand Load a (small) constant into a register: Constant is 16 bits and is signed addi $s0,$zero,n # $s0=n ($s0 31-16 =sign ext; $s0 15-0 =n) What if need a larger/smaller constant? Assembler pseudo-instruction li reg,constant Translated into 1 instruction for immediates < 16bits and into more instructions for more complicated cases (e.g. 2 instructions for a 32-bit immediate) lui $s1,n1 # $s1 31-16 =n1; $s1 15-0 =0 ori $s1,$s1,n2 # $s1 31-16 =n1; $s1 15-0 =n2 Inf2C Computer Systems - 2017-2018. Boris Grot 15

Getting at the data Programming statement: g = h + A[1] where h is in register $s1 A[0] is the first element of array A and is pointed to by $s2 MIPS: offset lw $t1,4($s2) # $t1=memory[4+$s2] add $t2,$s1,$t1 # $t2 = h + $t1 $s2 0 4 8 Memory 32 bits A[0] A[1] A[ ] 2 32-4 Inf2C Computer Systems - 2017-2018. Boris Grot 16

Data-transfer instructions Load Word: Store Word: Load Byte: Store Byte: lw r1,n(r2) # r1=memory[n+r2] sw r1,n(r2) # memory[n+r2]=r1 offset (in bytes) base address lb r1,n(r2) # r1 7-0 = memory[n+r2] r1 31-8 = sign extension sb r1,n(r2) # memory[n+r2]=r1 7-0 no sign extension Inf2C Computer Systems - 2017-2018. Boris Grot 17

Memory addressing Memory is byte addressable, but it is organised so that a whole word can be accessed directly Where can a word be stored? Option 1: anywhere (unaligned) Option 2: at an address that is a multiple of the word size (aligned) Both options in use today: MIPS requires alignment, x86 doesn t What are the trade-offs? Inf2C Computer Systems - 2017-2018. Boris Grot 18

Memory addressing: Endianness Given a memory address, Endianness tells us where to find the starting byte of a word Image source: http://en.wikipedia.org/wiki/endianness Inf2C Computer Systems - 2017-2018. Boris Grot 19

The history of the term Endianness D. Cohen introduced the terms Little- and Big-Endian for byte ordering in a 1981 IEEE Computer article. In his analysis of byte ordering issues, the "endian" names were drawn from Jonathan Swift's satire Gulliver s Travels, in which civil war erupts over whether the big or the small end of a soft-boiled egg is the proper end to crack open. Source: Wikipedia From the article: This is an attempt to stop a war. I hope it is not too late and that somehow, magically perhaps, peace will prevail... the issue is: "What is the proper byte order in [network] messages? For reference, note that Lilliput and Little-Endians both start with "L", and that both Blefuscu and Big-Endians start with a "B". Inf2C Computer Systems - 2017-2018. Boris Grot 20

Instruction formats Instruction representation composed of bit-fields Similar instructions have the same format MIPS instruction formats: R-format (add/sub, and/or, sll/slr, ) 6 5 5 5 5 6 op Main opcode 6 5 5 16 op rs rt rd shamt 1st operand I-format (addi, lw, sw, ) 2nd result shift sub-function operand opcode rs rt immediate 1st operand result func number of bits number of bits Inf2C Computer Systems - 2017-2018. Boris Grot 21

A simple program to swap array elements 1 2 3 4 5 6 7 8 9 10 11 12 13 14 int main(void) { int size = 6; } int v[] = {1, 10, 2, 20, 3, 30}; // array w/ 6 elements for (int i=0; i<size; i+=2) swap(v, i); // pass array (by reference) and index i void swap(int v[], int idx) { int temp; } temp = v[idx]; v[idx] = v[idx+1]; v[idx+1] = temp; Inf2C Computer Systems - 2017-2018. Boris Grot 22

Swap() in MIPS 1 2 3 4 5 6 7 8 9 10 11 12 13 14 swap: # inputs: $a0 array base, $a1 - index # Compute the address into the array sll $t0, $a1, 2 # reg $t0 = idx * 4 add $t0, $a0, $t0 # reg $t0 = v + (idx*4) # $t0 holds the addr of v[idx] # Load the two values to be swapped lw $t1, 0($t0) lw $t2, 4($t0) # reg $t0 = v[idx] # reg $t2 = v[idx+1] # Store the swapped values back to memory sw $t2, 0($t0) # v[idx] = $t2 sw $t1, 4($t0) # v[idx+1] = $t0 Inf2C Computer Systems - 2017-2018. Boris Grot 23

Control transfers: If structures Java/C: if (i!=j) stmnt1 else stmnt2 stmnt3 if case else case follow through MIPS: branch if equal - compare value in $s1 with value in $s2 - if equal, branch to instruction marked label beq $s1,$s2,label beq $s1,$s2,label2 stmnt1 j label3 # skip stmnt2 label2: stmnt2 label3: stmnt3 Inf2C Computer Systems - 2017-2018. Boris Grot 25

Control transfer instructions Conditional branches, I-format: In assembly code, label is usually a string In machine code, label is obtained from the immediate operand as: branch target = PC + 4 * offset Similarly: 6 5 5 16 4 r1 r2 offset Unconditional jump, J-format: j label beq r1,r2,label bne r1,r2,label # if r1!=r2 go to label 6 26 2 target Inf2C Computer Systems - 2017-2018. Boris Grot 26

Loops in assembly language Java/C: MIPS: while (count!=0) stmnt loop: beq $s1,$zero,end # $s1 holds count stmnt j loop # branch back to loop end: Inf2C Computer Systems - 2017-2018. Boris Grot 27

Loops in assembly language Java/C: MIPS: while (flag1 && flag2) stmnt loop: beq $s1,$zero,end # $s1 holds flag1 beq $s2,$zero,end # $s2 holds flag2 stmnt j loop # branch back to loop end: Inf2C Computer Systems - 2017-2018. Boris Grot 28

Comparisons Set if less than (R-format): set r1 to 1 if r2<r3, otherwise set r1 to 0 E.g., Java/C: while (i > j) stmnt slt r1,r2,r3 MIPS: assume that $s1 contains i and $s2 contains j loop: slt $t0,$s2,$s1 # $t0 = (j < i) beq $t0,$zero,end # branch if i <= j stmnt j loop # jump back to loop end: Inf2C Computer Systems - 2017-2018. Boris Grot 29

MIPS Instruction Format Summary R-type (register to register) three register operands most arithmetic, logical and shift instructions I-type (register with immediate) instructions which use two registers and a constant arithmetic/logical with immediate operand load and store branch instructions with relative branch distance J-type (jump) jump instructions with a 26 bit address Inf2C Computer Systems - 2017-2018. Boris Grot 30

Practice problem: Inf2C Computer Systems - 2017-2018. Boris Grot 31

Common MIPS Arithmetic & Logical Operators Integer Arithmetic + add - sub * multiply / divide % remainder Bit-wise logic or & ^ and xor ~ not Shifts >> (signed) shift-right-arithmetic >> (unsigned) shift-right-logical << shift-left-logical Boolean (src1!= 0 or src2!= 0) && (src1!= 0 and src2!= 0) Inf2C Computer Systems - 2017-2018. Boris Grot 32

Common MIPS Relational Operators Relational < slt, sltu, slti, sltiu <= sle, sleu > sgt, sgtu >= sge, sgeu == seq!= sne Pseudo-instructions C operator Comparison Reverse Branch == seq 0 bne!= seq 0 beq < slt, sltu,.. 0 bne >= slt, sltu,.. 0 beq > slt, sltu,.. 1 bne <= slt, sltu,.. 1 beq Inf2C Computer Systems - 2017-2018. Boris Grot 33

Method calls Method calls are essential even for a small program Most ISAs provide support for method calls Java/C: foo(); foo(); call to foo at line L1 call to foo at line L2 void foo() { return; } where do we return to? Inf2C Computer Systems - 2017-2018. Boris Grot 34

MIPS support for method calls Jumping into the method: jump and link : set $ra to PC+4 set PC to label J-format instruction jal label Returning: jr ra jump register : set PC to value in register $ra Note that any register can be used as a jump target Inf2C Computer Systems - 2017-2018. Boris Grot 35

MIPS register convention on method calls Method parameters: $a0 - $a4 Return values: $v0, $v1 Regs preserved across call boundaries: $s0 - $s7 Regs not preserved across call boundaries: $t0 - $t9 What about nested method calls? Inf2C Computer Systems - 2017-2018. Boris Grot 36

Using a stack for method calls Nested calls must save return address to prevent overwriting. Solution: use a stack in memory call A call B call C 0x7fffffff smaller addr A B C D Stack region: - starts at top address - grows downward stack pointer (sp) Inf2C Computer Systems - 2017-2018. Boris Grot 37

Using a stack for method calls Nested calls must save return address to prevent overwriting. Solution: use a stack in memory call A call B call C to push a word: to pop a word: 0x7fffffff smaller addr A B C D Stack region: - starts at top address - grows downward stack pointer (sp) addi $sp,$sp,-4 # move sp down sw $ra,0($sp) # save ra on top of stack lw $ra,0($sp) # fetch value from stack addi $sp,$sp,4 # move sp up In MIPS, sp always points to the last valid word on the stack Inf2C Computer Systems - 2017-2018. Boris Grot 38

Other uses of the stack Stack used to save caller s registers, so that they can be used by the callee In MIPS, these are the $t registers General issue: caller save vs callee save Stack can also be used to pass & return parameters Gets around the limited number of parameter and return value registers Finally, stack is used for local variables within the function Stack grows parameters (caller context) return address local vars Inf2C Computer Systems - 2017-2018. Boris Grot 39

A simple program to swap array elements 1 2 3 4 5 6 7 8 9 10 11 12 13 14 int main(void) { int size = 6; } int v[] = {1, 10, 2, 20, 3, 30}; // array w/ 6 elements for (int i=0; i<size; i+=2) swap(v, i); // pass array (by reference) and index i void swap(int v[], int idx) { int temp; } temp = v[idx]; v[idx] = v[idx+1]; v[idx+1] = temp; Inf2C Computer Systems - 2017-2018. Boris Grot 40

Main() in MIPS 1 2 3 4 5 6 7 8 9 10 11 12 13 14 main: loop: # Initialize variable la $s0, array # $s0: base addr of v[] addi $s1, $zero, 0 # $s1: index into the array (i) addi $s2, $zero, 6 # $s1: array size beq $s1, $s2, out move $a0, $s0 move $a1, $s1 jal swap addi $s1, $s1, 2 j loop # $a0 = $s0 (array base pointer) # $a1 = $s1 (index) # call swap # increment the index out: Inf2C Computer Systems - 2017-2018. Boris Grot 41

Swap(): what s missing? 1 2 3 4 5 6 7 8 9 10 11 12 13 swap: # Compute the address into the array sll $t0, $a1, 2 # reg $t1 = idx * 4 add $t0, $a0, $t0 # reg $t1 = v + (idx*4) # $t1 holds the addr of v[idx] # Load the two values to be swapped lw $t1, 0($t0) # reg $t0 = v[idx] lw $t2, 4($t0) # reg $t2 = v[idx+1] # Store the swapped values back to memory sw $t2, 0($t0) # v[idx] = $t2 sw $t1, 4($t0) # v[idx+1] = $t0 Inf2C Computer Systems - 2017-2018. Boris Grot 42

Swap(): complete version 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 swap: # Compute the address into the array sll $t0, $a1, 2 # reg $t1 = idx * 4 add $t0, $a0, $t0 # reg $t1 = v + (idx*4) # $t1 holds the addr of v[idx] # Load the two values to be swapped lw $t1, 0($t0) # reg $t0 = v[idx] lw $t2, 4($t0) # reg $t2 = v[idx+1] # Store the swapped values back to memory sw $t2, 0($t0) # v[idx] = $t2 sw $t1, 4($t0) # v[idx+1] = $t0 jr $ra # return to main Inf2C Computer Systems - 2017-2018. Boris Grot 43

Should an ISA be simple or complex? ISAs range in complexity MIPS is a relatively simple ISA. But is that the right design choice? Consider the earlier example: High-level language (HLL): a[0]=b[0]+10 Assembly language: Simple: Complex: lw r4,0(r2) # r4=memory[r2+0] add r5,r4,10 # r5=r4+10 sw r5,0(r1) # memory[r1+0]=r5 ADDW3 (R5),(R2),10 Inf2C What Computer Systems are the - 2017-2018. trade-offs?? Boris Grot 44

CISC vs RISC ISAs Complex Instruction Set (CISC) Appeared in early computers, including x86 Computers programmed in assembly à high-level language features as instructions Very few registers à operands can be in memory Very little memory à variable length instructions to minimize code size Reduced Instruction Set (RISC) Appeared in the 80s. Used today in ARM, MIPS, and SPARC ISAs. Compilers à Simple instructions More registers à load-store architecture More memory & faster clock frequency à fixed length, fixed format instructions for easy, fast decoding logic Inf2C Computer Systems - 2017-2018. Boris Grot 45