+ All Categories
Home > Documents > ECE 103 Engineering Programming Chapter 5 Programming Languages Herbert G. Mayer, PSU CS Status...

ECE 103 Engineering Programming Chapter 5 Programming Languages Herbert G. Mayer, PSU CS Status...

Date post: 01-Jan-2016
Category:
Upload: posy-patrick
View: 226 times
Download: 1 times
Share this document with a friend
Popular Tags:
20
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
Transcript

ECE 103 Engineering ProgrammingChapter 5

Programming Languages

Herbert G. Mayer, PSU CSStatus 6/19/2015

Initial content copied verbatim fromECE 103 material developed by

Professor Phillip Wong @ PSU ECE

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

3

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

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

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

How are programs created?1. Develop an algorithm for the solution in your head2. 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

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

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

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

v0

v1

v2

v3

:

v253

v254

v255

10

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 ShotPin-out

11

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.2x107 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

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

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 theCPU’s “Load Accumulator”instruction

Address (hex)

600

601

602

603

604

605

606

607

Stored Instruction or Data

binary hex

10101001 A9

01011010 5A

00011000 18

01101001 69

00100000 20

10001101 8D

00000000 00

00010000 10

14

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.html

15

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

Example: AL version of previous ML code

600: A9 5A LDA #$5A ; Load accumulator with number

602: 18 CLC ; Clear carry flag

603: 69 20 ADC #$20 ; Add $20 to accumulator w/carry

605: 8D 00 10 STA $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-program

17

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

Example: HLL version of previous ML codem = 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

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

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.


Recommended