1 / 17

Introduction to SIMPLE

Introduction to SIMPLE A reduced instruction set High Level Language (HLL) The Simple programming Language Simple has only 7 statements rem - the remainder of the line is a comment input - read from the keyboard print - write to the terminal goto - jump to a line number

issac
Download Presentation

Introduction to SIMPLE

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Introduction to SIMPLE A reduced instruction set High Level Language (HLL) 1BA3 – G Lacey – Semester 1 Lecture 4

  2. The Simple programming Language • Simple has only 7 statements • rem - the remainder of the line is a comment • input - read from the keyboard • print - write to the terminal • goto - jump to a line number • if/goto - if a condition is true jump to another line • let - evaluate a mathematical expression • end - end of the program • Every line has a line number • Simple only operates on integers • Simple only has lower case • Variable names have a single letter 1BA3 – G Lacey – Semester 1 Lecture 4

  3. The Simple programming Language • Variables can only be integers and do not need to be declared before being used • Simple mathematical operators • Addition, subtraction, multiplication, division are +, -, *, / • greater than >, greater than or equal to >= • less than <, less than or equal to <= • equal to ==, not equal to != • assign the value to = • parentheses ( ) • Examples • 10 rem this is a comment • 22 input x • 33 if x == 0 goto 10 • 40 let r = a + b * c / ( a - d ) • 50 print x 1BA3 – G Lacey – Semester 1 Lecture 4

  4. read a read b sum = a + b print sum end Determine and print the sum of two numbers 10 rem add and print the sum of 2 nums 20 input a 30 input b 40 let c = a + b 50 print c 60 end 1BA3 – G Lacey – Semester 1 Lecture 4

  5. read a read b true if a > b false print a print b end Print the larger of 2 numbers 1BA3 – G Lacey – Semester 1 Lecture 4

  6. Print the larger of two numbers • 10 input a • 20 input b • 30 if a >= b goto ? x • 40 print b • 50 goto ? y • x 60 print a • y 70 end 1BA3 – G Lacey – Semester 1 Lecture 4

  7. Compute the sum of a series of positive numbers • Series is terminated by a negative number • Maximum number of integers in the series is 10 • This problem was solved in a previous lecture using SML 1BA3 – G Lacey – Semester 1 Lecture 4

  8. sum = 0 counter = 0 read a true if a < 0 false true if counter == 10 print sum false counter +1 end sum + a Compute the sum of a series of positive numbers 1BA3 – G Lacey – Semester 1 Lecture 4

  9. Compute the sum of a series of positive numbers 10 rem read series of numbers and print sum 12 rem initialise counter and sum 15 let c = 0 20 let s = 0 22 rem start programme 25 input x 30 if x > 0 goto ? 35 if c == 10 goto ? 40 let c = c + 1 45 let s = s + x 47 rem restart loop 50 goto 40 53 rem print sum and end programme 55 print s 60 end 1BA3 – G Lacey – Semester 1 Lecture 4

  10. A SIMPLE to SML Compiler An introduction to the concepts in translating HLL into Assembly 1BA3 – G Lacey – Semester 1 Lecture 4

  11. Compilers • Compilers translate High Level Languages (HLLs) like Java and C++ into Machine code • Two reasons for using HLLs • Ease of programming • It is easier to solve large problems using HLLs because most of the machine specific detail is hidden. • Machine Independence • Different processors use different instruction sets. This detail is taken care of by the compiler. Thus a c++ program written on a mac will also compile on a p.c. 1BA3 – G Lacey – Semester 1 Lecture 4

  12. Translating Simple to Simpletron Machine Language • Compiling a Simple programme involves translating the Simple Code to SML • Each Simple statement has to be translated into SML instructions • Each variable must be allocated memory space • Each constant must be allocated memory space 1BA3 – G Lacey – Semester 1 Lecture 4

  13. Compiling Simple • Allocating Data Space for variables and constants • start at the max memory and work down. • E.G. in Simpletron begin by allocating memory space 99, then 98, 97... • Compiling Instructions • Instructions are placed at the bottom of memory working up. • E.G. in Simpletron the processor always starts at 00. The first instruction is placed at 00, the next at 01, then 02 ... • Running out of space • If the programme is too big (too much code and too many variables and constants) the instruction space will run into the data space. 1BA3 – G Lacey – Semester 1 Lecture 4

  14. Example Production Rules for translating Simple into SML • 10 input x • input corresponds to the READ operation SML thus the operator part of the SML instruction is 10 • x is a variable and must be allocated memory space if none has been allocated already. • the instruction placed in memory location 00 is 1099 • 20 print x • print corresponds to the WRITE operator in SML thus the operator is 11 • x has already been allocated memory location 99 • the instruction in memory location 01 is 1199 • 30 goto 10 • goto corresponds to the BRANCH operator in SML thus the operator is 40 • the instruction compiled from line number 10 was placed in memory location 00 thus the operand is 00 • the instruction 4000 is placed in memory location 02 • 40 end • corresponds to HALT in SML thus 4300 goes into location 03 1BA3 – G Lacey – Semester 1 Lecture 4

  15. Example Compilation Simple Code SML Instructions 10 input x 20 print x 30 goto 10 40 end 1BA3 – G Lacey – Semester 1 Lecture 4

  16. More Complex Production Rules • To translate if and goto statements the compiler must generate more than one statement. • First : • load x into the accumulator • Second : • branch if accumulator is zero to instruction from line number 10 Simple SML 10 input x 20 if x == 0 goto 10 1BA3 – G Lacey – Semester 1 Lecture 4

  17. Another Example Simple SML 10 input x 20 input y 30 if x > y goto 10 1BA3 – G Lacey – Semester 1 Lecture 4

More Related