Presentation is loading. Please wait.

Presentation is loading. Please wait.

ECE 103 Engineering Programming Chapter 5 Programming Languages Herbert G. Mayer, PSU CS Status 6/19/2015 Initial content copied verbatim from ECE 103.

Similar presentations


Presentation on theme: "ECE 103 Engineering Programming Chapter 5 Programming Languages Herbert G. Mayer, PSU CS Status 6/19/2015 Initial content copied verbatim from ECE 103."— Presentation transcript:

1 ECE 103 Engineering Programming Chapter 5 Programming Languages Herbert G. Mayer, PSU CS Status 6/19/2015 Initial content copied verbatim from ECE 103 material developed by Professor Phillip Wong @ PSU ECE

2 Syllabus What’s This Blue Code? Introduction Computer Architecture Overview Machine Language Assembly Language High-Level Language C Programming Language

3 2 What’s This? // Assume non-negative args. Should be ”unsigned” int fact( int arg ) { // fact if ( arg <= 1 ) { // fact(0) = fact(1) = 1 return 1; }else{ return fact( arg – 1 ) * arg; } //end if } //end fact int main( /* no params */ ) { // main printf( ”Factorial %d = %d\n”, 10, fact( 10 ) ); return 0; } //end main

4 3 Introduction What is a program?  Software that runs on an standard computer Word processor, database engine, web browser, video game, graphics package, simulator, etc.  Where else are programs found? Embedded – Microwave oven, engine controller, media player, thermostat, pacemaker, toy, etc. Electromechanical – Early computers (e.g. ENIAC) Mechanical – Jacquard loom (1801), Babbage analytical engine (1837) Biological – Instinctive and learned behaviors

5 4 What do programs do?  Perform “useful” computation or IO  Process information Input  Program  Output  Programs may require input (but not always) numeric or text input, sensor values, etc.  Programs may generate output (but not always) text, graphics, actions such as triggering devices

6 5 How are programs created? 1. Develop an algorithm for the solution in your head 2. Write a program via a computer file; textual Programming languages provide syntax for implementing algorithms on a computer Traditional approaches:  Machine language  Assembly language  High-level languages, generally machine- independent

7 6 Classic Computer Architecture Overview Simplified computer model: Main Memory (RAM, ROM) Auxiliary Storage (e.g., disk drives) Input (e.g., keyboard, mouse) Output (e.g., monitor, printer) Processor (CPU)

8 7 The processor executes the program's instructions. Registers (fast memory) Memory Interface Instruction Decoder To main memory The ALU (Arithmetic Logic Unit) performs basic arithmetic, logic, and comparison operations. ALU

9 8 Program instructions and data are stored in computer memory (e.g., RAM or sometimes ROM) Each memory location is assigned a unique address. Address 0 1 2 3 : 253 254 255 Stored Value v0v0 v1v1 v2v2 v3v3 : v 253 v 254 v 255

10 9 Example: Vintage CPU (1975) MOS 6502 Single core 8-bit data Memory  64 KB main  Registers: Accumulator (A) Index (X, Y) Processor Status (P) Stack Pointer (S) Program Counter (PC) Speed: 1 to 2 MHz Process: 8  m # of transistors: ~3500 Die Shot Pin-out

11 10 Example: Modern CPU (2013) Intel i7-4770 Haswell Four cores 64-bit data Memory  4x256 KB L2 cache  8 MB L3 cache  32 GB main (3.2x10 7 KB)  Registers: 8 32-bit 16 64-bit Integrated GPU Speed: 3.4 GHz (3400 MHz) Process: 22 nm (0.022  m) # of transistors: ~1.4 billion Die Shot Package

12 11 Machine Language Machine language (ML) is a set of very low-level instructions that directs a computer processor to perform specific elementary operations  Not to be confused with the programming language ML! Each CPU family has its own, unique ML Some families (Intel x86) have long life Deep expertise needed to write ML programs

13 12 How does a computer run ML programs? A machine language program consists of processor instructions and data that are stored in memory Example: 6502 CPU (start address = $600) e.g., A9 represents the CPU’s “Load Accumulator” instruction Address (hex) 600 601 602 603 604 605 606 607 Stored Instruction or Data binaryhex 10101001A9 010110105A 0001100018 0110100169 0010000020 100011018D 0000000000 0001000010

14 13 The CPU’s program counter contains the address of the next instruction to execute Processor cycle:  Retrieve an instruction from memory  Decode the instruction  Act on the instruction  Increment the program counter Example: Visual CPU Simulator – http://visual6502.org/JSSim/index.htmlhttp://visual6502.org/JSSim/index.html

15 14 Assembly Language ML coding is tedious and error-prone, so more advanced languages were developed Assembly language programs (AL) use mnemonics (symbolic names and keywords) instead of binary digits AL programs are easier to write, understand, and modify than ML programs; but still tedious

16 15 Example: AL version of previous ML code 600: A9 5ALDA #$5A; Load accumulator with number 602: 18CLC; Clear carry flag 603: 69 20ADC #$20; Add $20 to accumulator w/carry 605: 8D 00 10STA $1000; Store accumulator at $1000 An assembler translates an assembly program to machine language Assembly language still requires a high level of programmer expertise Example: Easy 6502 – http://skilldrick.github.com/easy6502/#first-programhttp://skilldrick.github.com/easy6502/#first-program

17 16 High-Level Languages A high-level language (HLL) uses a more natural language approach to keywords and syntax A single HLL statement may be equivalent to many machine or assembly instructions Abstract algorithms are easier to implement in HLL It is easier to write, maintain, modify, and port programs using a high-level language; result: Higher productivity

18 17 Example: HLL version of previous ML code m = 0x5A + 0x20; /* Add hex $5A and $20 */ A compiler or interpreter translates a high-level program to machine code Many HLLs (several hundred) exist:  FORTRAN, COBOL, Lisp, BASIC, …  Pascal, C, C++, C#, Java, Python, … An HLL increases programmer productivity (again)!

19 18 The C Programming Language C was developed by Dennis Ritchie in the early 1970s for use on UNIX systems at Bell Labs C is a somewhat “high-level” language, because it supports structured programming practices C also is “low-level”, as it permits access to underlying computer hardware C is an international standard (ISO) C and the newer C++ are widely used in engineering, scientific, and business disciplines:  Efficient, good performance, portable

20 19 C Language Evolution 1969 to 1973 – C (Bell Labs initial development) 1978 – K&R C (Kernighan and Ritchie) 1989 – C89 (ANSI) 1990 – C90 (ISO) 1995 – C90 Normative Amendment 1 → "C95" 1999 – C99 (ISO) 2011 – C11 (ISO) ANSI C89 and ISO C90 are the same standard.


Download ppt "ECE 103 Engineering Programming Chapter 5 Programming Languages Herbert G. Mayer, PSU CS Status 6/19/2015 Initial content copied verbatim from ECE 103."

Similar presentations


Ads by Google