building your own machine the universal machine (um) introduction

16
Building Your Own Machine The Universal Machine (UM) Introduction Noah Mendelsohn Tufts University Email: [email protected] Web: http://www.cs.tufts.edu/~noah COMP 40: Machine Structure and Assembly Language Programming (Fall 2014)

Upload: cian

Post on 16-Feb-2016

32 views

Category:

Documents


0 download

DESCRIPTION

COMP 40: Machine Structure and Assembly Language Programming. Building Your Own Machine The Universal Machine (UM) Introduction. Noah Mendelsohn Tufts University Email: [email protected] Web: http://www.cs.tufts.edu/~noah. COMP 40 R oadmap. Building Useful Applications in your Language. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Building Your Own Machine The Universal Machine (UM) Introduction

Building Your Own MachineThe Universal Machine (UM)

Introduction

Noah MendelsohnTufts UniversityEmail: [email protected]: http://www.cs.tufts.edu/~noah

COMP 40: Machine Structure and

Assembly Language Programming (Fall 2014)

Page 2: Building Your Own Machine The Universal Machine (UM) Introduction

© 2010 Noah Mendelsohn

COMP 40 Roadmap

2

Ramp up your Programming Skills

Big programs that teach you abstraction, pointers, locality,

machine representations of dataBuilding a Language Processor

on your Emulator

Emulating your own hardware in software

Intel Assembler ProgrammingThe Bomb!

Building Useful Applications in your Language

Page 3: Building Your Own Machine The Universal Machine (UM) Introduction

© 2010 Noah Mendelsohn

Introducing theUniversal Machine

Page 4: Building Your Own Machine The Universal Machine (UM) Introduction

© 2010 Noah Mendelsohn

Why work with the UM?

AMD64 is complicated – UM has 14 instructions Easy to implement (HW or SW) Learn more about assemblers and linkers Learn to write assembler code You will write an emulator for this machine – emulation is a

wonderful and important technique! The term UM traces to the work of Alan Turing

4

Detailed specification for the UM will come with your next assignment

Page 5: Building Your Own Machine The Universal Machine (UM) Introduction

© 2010 Noah Mendelsohn

UM Highlights

8 32 bit registers (no floating point) 14 RISC-style (simple) instructions Load/store architecture: all manipulation done in registers Segmented memory

– Executing code lives in segment 0– Programs can create and map new zero-filled segments– Any segment can be cloned to become the new code segment (0)

Simple byte-oriented I/O Does not have explicit:

– Jump/branch– Subtract– Shift

5

Page 6: Building Your Own Machine The Universal Machine (UM) Introduction

© 2010 Noah Mendelsohn

14 UM Instructions

Arithmetic and data Add, multiply, divide (not subtract!) Load value Conditional move

Logical Bitwise nand (~and)

Memory management Map/unmap segment Segmented load/store Load program

I/O Input (one byte), Output (one byte)

Misc Halt

6

Page 7: Building Your Own Machine The Universal Machine (UM) Introduction

© 2010 Noah Mendelsohn

14 UM Instructions

Arithmetic and data Add, multiply, diviicde (not subtract!) Load value Conditional move

Logical Bitwise nand (~and)

Memory management Map/unmap segment Segmented load/store Load program

I/O Input (one byte), Output (one byte)

Misc Halt

7

Add: $r[A] := ($r[B] + $r[C]) mod 232

Documented in the form of assignmentstatements (register transfer langauge – RTL)

Page 8: Building Your Own Machine The Universal Machine (UM) Introduction

© 2010 Noah Mendelsohn

01632Instruction Format

14 UM Instructions

Arithmetic and data Add, multiply, diviicde (not subtract!) Load value Conditional move

Logical Bitwise nand (~and)

Memory management Map/unmap segment Segmented load/store Load program

I/O Input (one byte), Output (one byte)

Misc Halt

8

RCOP RBR1

Add: $r[A] := ($r[B] + $r[C]) mod 232

Page 9: Building Your Own Machine The Universal Machine (UM) Introduction

© 2010 Noah Mendelsohn

14 UM Instructions

Arithmetic and data Add, multiply, diviicde (not subtract!) Load value Conditional move

Logical Bitwise nand (~and)

Memory management Map/unmap segment Segmented load/store Load program

I/O Input (one byte), Output (one byte)

Misc Halt

9

RC3 RBR1

01632Instruction Format

4 bits to selectone of 14 operationsAdd: $r[A] := ($r[B] + $r[C]) mod 232

Page 10: Building Your Own Machine The Universal Machine (UM) Introduction

© 2010 Noah Mendelsohn

14 UM Instructions

Arithmetic and data Add, multiply, diviicde (not subtract!) Load value Conditional move

Logical Bitwise nand (~and)

Memory management Map/unmap segment Segmented load/store Load program

I/O Input (one byte), Output (one byte)

Misc Halt

10

RCOP RBR1

01632Instruction Format

3 bits to selectone of 8 registers

Add: $r[A] := ($r[B] + $r[C]) mod 232

Page 11: Building Your Own Machine The Universal Machine (UM) Introduction

© 2010 Noah Mendelsohn

What’s different from AMD64?

Very few instructions – can we do real work? Pointers to words not bytes Segmented memory model AMD/Intel has I/O, but we did not study it No floating point

11

Page 12: Building Your Own Machine The Universal Machine (UM) Introduction

© 2010 Noah Mendelsohn

Next time we will discuss in more detail

Memory models and the segmented memory of the UM I/O How programs start and execute Building complex instructions from simple ones

12

Page 13: Building Your Own Machine The Universal Machine (UM) Introduction

© 2010 Noah Mendelsohn

Computabilityand

Turing-Completeness

Page 14: Building Your Own Machine The Universal Machine (UM) Introduction

© 2010 Noah Mendelsohn

Emulators

Page 15: Building Your Own Machine The Universal Machine (UM) Introduction

© 2010 Noah Mendelsohn

Emulators

Hardware or software that implements another machine architecture

Great way to learn about machines:– The emulator you write will do in software the same thing machines do in hw

Terrific tool for– Testing code before hardware is ready– Performance analysis (e.g. our testcachesim)– Evaluating processor/memory design before committing to build chip– Moving systems to a new architecture (e.g. Apple move from PowerPC to Intel)

15

Page 16: Building Your Own Machine The Universal Machine (UM) Introduction

© 2010 Noah Mendelsohn

Question?

How would you implement an emulator for the UM?

16