ECE 103 Engineering Programming Chapter 5 Programming Languages Herbert G. Mayer, PSU CS Status...
-
Upload
posy-patrick -
Category
Documents
-
view
228 -
download
1
Transcript of ECE 103 Engineering Programming Chapter 5 Programming Languages Herbert G. Mayer, PSU CS Status...
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