ECE 101 Exploring Electrical Engineering Chapter 9 Programming Development Environment Herbert G. Mayer, PSU Status 3/1/2016.

Slides:



Advertisements
Similar presentations
EEE226 MICROPROCESSORBY DR. ZAINI ABDUL HALIM School of Electrical & Electronic Engineering USM.
Advertisements

Processor System Architecture
CEN 226: Computer Organization & Assembly Language :CSC 225 (Lec#3) By Dr. Syed Noman.
CS 161 Introduction to Programming and Problem Solving Chapter 6 Programming Development Environment Herbert G. Mayer, PSU Status 10/20/2014.
Microprocessor and Microcontroller Based Systems Instructor: Eng.Moayed N. EL Mobaied The Islamic University of Gaza Faculty of Engineering Electrical.
Introduction to Computers and Programming - Class 1 1 Introduction to Computers and Programming Professor Avi Rosenfeld.
Room: E-3-31 Phone: Dr Masri Ayob TK 2123 COMPUTER ORGANISATION & ARCHITECTURE Lecture 5: CPU and Memory.
1 Lecture 1  Getting ready to program  Hardware Model  Software Model  Programming Languages  The C Language  Software Engineering  Programming.
CSCE 121, Sec 200, 507, 508 Fall 2010 Prof. Jennifer L. Welch.
Chapter 2: Impact of Machine Architectures What is the Relationship Between Programs, Programming Languages, and Computers.
Chapter 1 Introduction to C Programming. 1.1 INTRODUCTION This book is about problem solving with the use of computers and the C programming language.
C++ Programming: From Problem Analysis to Program Design, Third Edition Chapter 1: An Overview of Computers and Programming Languages C++ Programming:
Topic 1: Introduction to Computers and Programming
Computer Systems CS208. Major Components of a Computer System Processor (CPU) Runs program instructions Main Memory Storage for running programs and current.
CS102 Introduction to Computer Programming
BLOCK DIAGRAM OF COMPUTER
1 Lecture 2 : Computer System and Programming. Computer? a programmable machine that  Receives input  Stores and manipulates data  Provides output.
Georgia Institute of Technology Introduction to Programming Part 2 Barb Ericson Georgia Institute of Technology May 2006.
E0001 Computers in Engineering1 The System Unit & Memory.
The Computer Systems By : Prabir Nandi Computer Instructor KV Lumding.
CS 1308 Computer Literacy and the Internet Computer Systems Organization.
CISC105 General Computer Science Class 1 – 6/5/2006.
Computer Systems Organization CS 1428 Foundations of Computer Science.
C++ Programming Language Lecture 1 Introduction By Ghada Al-Mashaqbeh The Hashemite University Computer Engineering Department.
Microcode Source: Digital Computer Electronics (Malvino and Brown)
ECE 103 Engineering Programming Chapter 5 Programming Languages Herbert G. Mayer, PSU CS Status 6/19/2015 Initial content copied verbatim from ECE 103.
C++ Programming: From Problem Analysis to Program Design, Third Edition Chapter 1: An Overview of Computers and Programming Languages.
Computer Organization - 1. INPUT PROCESS OUTPUT List different input devices Compare the use of voice recognition as opposed to the entry of data via.
CHAPTER 1 INTRODUCTION 1 st Semester H King Saud University College Of Applied Studies and Community Services CSC 1101 Computer Programming-1.
Computer Organization & Assembly Language © by DR. M. Amer.
Computer Architecture Memory, Math and Logic. Basic Building Blocks Seen: – Memory – Logic & Math.
CHAPTER 1 INTRODUCTION 2 nd Semester H King Saud University College Of Applied Studies and Community Services CSC 1101 Computer Programming-1.
Computer Hardware A computer is made of internal components Central Processor Unit Internal External and external components.
Electronic Analog Computer Dr. Amin Danial Asham by.
CS 1308 Computer Literacy and the Internet. Objectives In this chapter, you will learn about:  The components of a computer system  Putting all the.
Chapter 1 : Overview of Computer and Programming By Suraya Alias
Chapter 2 Parts of a Computer System. 2.1 PC Hardware: Memory.
A.Abhari CPS1251 Topic 1: Introduction to Computers Computer Hardware Computer components Connecting Computers Computer Software Operating System (OS)
Computer Systems. Bits Computers represent information as patterns of bits A bit (binary digit) is either 0 or 1 –binary  “two states” true and false,
Lecture on Central Process Unit (CPU)
Question What technology differentiates the different stages a computer had gone through from generation 1 to present?
Computer Architecture Lecture 4 by Engineer A. Lecturer Aymen Hasan AlAwady 17/11/2013 University of Kufa - Informatics Center for Research and Rehabilitation.
ECE 103 Engineering Programming Chapter 7 Compiling C Programs Herbert G. Mayer, PSU CS Status 6/19/2015 Initial content copied verbatim from ECE 103 material.
1 Basic Processor Architecture. 2 Building Blocks of Processor Systems CPU.
Chapter 11  Getting ready to program  Hardware Model  Software Model  Programming Languages  Facts about C++  Program Development Process  The Hello-world.
Chapter 1 An Overview of Computers and Programming Languages.
Computer Operation. Binary Codes CPU operates in binary codes Representation of values in binary codes Instructions to CPU in binary codes Addresses in.
Hello world !!! ASCII representation of hello.c.
Operating Systems A Biswas, Dept. of Information Technology.
1 Chapter 1 Basic Structures Of Computers. Computer : Introduction A computer is an electronic machine,devised for performing calculations and controlling.
CIT 140: Introduction to ITSlide #1 CSC 140: Introduction to IT Operating Systems.
Chapter 3 Getting Started. Copyright © 2005 Pearson Addison-Wesley. All rights reserved. Objectives To give an overview of the structure of a contemporary.
Chapter 1 Introduction 2nd Semester H
ECE 103 Engineering Programming Chapter 5 Programming Languages
Computer System and Programming
Chapter 1: An Overview of Computers and Programming Languages
C++ Programming: From Problem Analysis to Program Design
Computer Architecture
IB Computer Science Topic 2.1.1
Computer Science I CSC 135.
Computer Organization & Compilation Process
CSCE Fall 2013 Prof. Jennifer L. Welch.
Chapter 5: Computer Systems Organization
King Saud University College Of Applied Studies and Community Services CSC 1101 Computer Programming-1 Done By: Asmal Alosaimi Edited By: Fatimah Alakeel.
CSCE Fall 2012 Prof. Jennifer L. Welch.
King Saud University College Of Applied Studies and Community Services CSC 1101 Computer Programming-1 Done By: Asmal Alosaimi Edited By: Fatimah Alakeel.
Introduction to Computer Programming
Introduction to Computer Systems
Computer Organization & Compilation Process
Presentation transcript:

ECE 101 Exploring Electrical Engineering Chapter 9 Programming Development Environment Herbert G. Mayer, PSU Status 3/1/2016

Syllabus What is a Program? What is a Computer? Holding Data Programming Languages Machine Language Sample Compiler Linker Loader

What is a Program A computer program is a sequence of executable machine instructions, reading information (input), computing new data, and generating output, according to the steps of an algorithm An algorithm is a finite sequence of instructions, reading information (input), computing new data, and generating output The two are almost synonymous, except that the program executes (AKA runs) on a computer, the algorithm is just an abstraction in our mind or written on paper

What is a Program The algorithm coded in a programming language becomes your program (noun) Why relevant to Electrical Engineers? Sooner or later you will acquire programming skills Either in a general purpose programming language Or a special programming language controlling a connected board Can be external or inserted internal into backplane of a computer But you will program (verb) eventually

What is a Computer A computer is a physical device that can read input, compute, and produce corresponding output It “understands” a small set of machine instructions, which it can execute, one at a time (for a uni-processor) It is possible, but very tedious, to write a program in such machine instructions An Assembler eases this tediousness by allowing users to write abstract data and symbolic instructions, which the assembler then translates into machine code A compiler (similar: an interpreter) reads higher-level programs and maps them into assembly code; or sometimes into machine code directly And you, EEs, will design and build the next generation of computers

What is a Computer Main Memory (RAM, ROM) Auxiliary Storage (e.g., disk drives) Input (e.g., keyboard, mouse) Output (e.g., monitor, printer) Processor (CPU)

Computer’s Processor – CPU or ALU Registers (fast storage) Memory Interface Instruction Decoder To main memory The ALU (Arithmetic Logic Unit) performs basic arithmetic, logic, and comparison operations. ALU

Holding Data A computer holds a good amount of data in memory The size of such a memory (AKA primary storage) is defined by the architecture’s address range E.g. on a 32-bit architecture, memory can be as large as 2 32 different addressable units Often such units are bytes, i.e. 8-bit addressable, contiguous units; other architectures use 60-bit words Large amounts of data are stored on secondary storage devices, such as rotating disks or SSDs Access to data in memory is slow, about times slower than executing one instruction Access to data on disk is even 10,000s of times slower

Holding Data Getting data from memory into the processor (usually a machine register) is called a load operation Moving data from a register to memory is called a store operation Such transport proceeds on a bus; the width of the bus and its speed are critical for the overall execution speed of the machine and thus of your programs

Programming Languages Even writing assembly source code is highly tedious Since the 1960s, higher-level programming languages have been developed Some of these are machine-independent; others highly machine-dependent (AKA architecture- dependent), e.g. C++ or Java A machine-independent language allows writing of source programs (code) that can be executed on different machines, provided a compiler is available on each This is referred to a portability of source programs, quite a desirable property!

Programming Language Milestones

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) C Language Milestones

Machine Language Sample 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 Assembler translates an assembly program to machine language Assembly language still requires a high level of programmer expertise

Compiler Compiler is a special-purpose system program that reads source programs, written in the source language and translates them into machine language Mapping into machine language (AKA object code) sometimes involves an intermediate step: Creating assembly source first, and then using the assembler to generate machine code A compiler generally understands just one input language; exceptions are some C++ compilers that also read C source Compilers emit error messages when certain violations are detected, referring messages to line numbers

Compiler Source files contain the C++ program code .cpp extension (file is in text format); also.c Header files can contain prototypes, macros, data type declarations, or source code .h extension (file is in text format) Object files contain intermediate compiled code .o -or-.obj extension Executable files contain runnable binary code .out -or-.exe -or- no extension

Compiler preprocessor → handles preprocessor directives and expands macro definitions compiler → takes preprocessed source code files and translates them to intermediate code; for beginners it is convenient to view the other system programs as part of the compiler assembler → takes intermediate code files and translates them to binary object code linker → resolves references among the object files and the libraries. It puts all the parts together to create the single, final, executable object file

16 prog_1.c prog_2.c prog_3.c etc. Source files prog_1.o prog_2.o prog_3.o etc. Object files prog Executable file stdio stdlib math etc. Library files Compiler PreprocessorLinker prog_1.h prog_2.h prog_3.h etc. User Header files stdio.h stdlib.h math.h etc. Library Header files Assembler Compiler

Linker Often programs are composed of multiple source programs For example, some projects are too large to have a single programmer develop all code in sequence Also system function, such as input, output, heap acquisitions etc. are provided in the PDE, and do need to be coded by the programmer All such elements are linked together into a single, executable object program That is the work of the system’s linker For C or C++ on Unix the link step is frequently hidden, i.e. not visible to the programmer

Loader When a program has been linked, it is still not executing, not even loaded! Instead, it is just a binary file, residing on some disk, as an object file, but ready to run To run such object code, it must be loaded into memory and be granted processor execution time That is the purpose of the system loader Generally, the loader and load function are not directly visible to the user = programmer

19 Example: Vintage CPU (1975) MOS 6502 Chuck Peddle at MOS 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 <- not a typo! Process: 8  m # of transistors: ~3500 Die Shot Pin-out

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