View
229
Download
5
Category
Tags:
Preview:
Citation preview
Chapter 17Programming Tools
The Architecture of Computer Hardware and Systems Software:
An Information Technology Approach
3rd Edition, Irv Englander
John Wiley and Sons 2003
Chapter 17 Programming Tools 17-2
Programming Tools OverviewProgramming Tools Overview
EditorsEditors AssemblersAssemblers DebuggersDebuggers
CompilersCompilers LinkersLinkers LoadersLoaders InterpretersInterpreters
Integrated Development Environments (IDEs) Integrated Development Environments (IDEs) combine several of the above programming toolscombine several of the above programming tools
Chapter 17 Programming Tools 17-3
The Program Translation Process
Terms,terms, andmore terms!
Source
Object
Executable
Translator
Linker
Loader
Chapter 17 Programming Tools 17-4
Visual Basic IDE
Chapter 17 Programming Tools 17-5
Program Text Editors Word processors format the appearance of the text Text editors
Format the spacing between words for legibility Ideal for structured languages Text is the same font size
Examples DOS – Edit Windows – Notepad, Wordpad Unix / Linux – ed, vi, emacs
IDEs MS Visual C++, Symantec Visual Cafe
Chapter 17 Programming Tools 17-6
Programming Language Categories
Machine Language Binary coded instructions
Assembly Language Symbolic coded instructions
Procedural Languages procedural statements or arithmetic notation
Four-generation Languages Natural language and nonprocedural statements
Object-oriented Languages Combination of objects and procedures
Chapter 17 Programming Tools 17-7
Assembly Language
When to use When speed or size of program is critical Hybrid approach Hardware Drivers Can use specialized instructions
Disadvantages Inherently machine specific Architectures may become obsolete Lack of programming structure
Chapter 17 Programming Tools 17-8
Assemblers Binary code = machine code Hex code Assembly Language
Mnemonic names op codes Labels memory addresses Comments Symbol table Operations table Memory Relocation
Cross Assembler
Chapter 17 Programming Tools 17-9
What Does This Program Do?
00 IN 901 ;input three numbers and save01 STO 99 39902 IN 90103 STO 98 39804 IN 90105 STO 97 397 ;subtract number in 98 from that in 9706 SUB 98 298 ;number in 97 larger07 BRP 10 811 ;number in 98 larger, restore 9808 LDA 98 59809 BR 11 61110 LDA 97 597 ;restore 9711 STO 96 396 ;store larger of (97, 98) in 9612 SUB 99 299 ;subtract number in 99 from larger13 BRP 16 816 ;number in 96 larger14 LDA 96 599 ;number in 99 larger, restore 9915 BR 17 61716 LDA 96 596 ;restore 9617 OUT 90218 COB 000
Chapter 17 Programming Tools 17-10
LMC Program in Java Use instructions in a more understandable
language
static int max (int x[]){
for (i=1; i<=3; i++)x[i] = input.getint();
max_int = x[1];for (i=2; i<=3; i++)
if (x[I] > max_int)max_int = x[I];
System.output.println(max_int);}
Chapter 17 Programming Tools 17-11
Procedural Languages COBOL
Wordy but easier to maintain FORTRAN
Scientists and engineers BASIC Pascal
Highly structured teaching language C
high-level commands and low-level access to hardware
Chapter 17 Programming Tools 17-12
Object-Oriented Languages
SmallTalk C++ Java
Based on C++ Platform independent
Chapter 17 Programming Tools 17-13
Compilers
Translates high-level language into low-level instructions
High-level language: Source code Machine-level: Object code Changes, including bug fixes, require
recompiling
Chapter 17 Programming Tools 17-14
Language Components
Lexicon All legal words in the language Meaning and type
Syntax grammar rules
Semantics meaning of command
Chapter 17 Programming Tools 17-15
Computer Language Descriptions
Narrative Syntax (Railroad) Diagrams BNF
Backus-Naur Form Context-Free Grammar
Chapter 17 Programming Tools 17-16
Railroad Diagram Examples
Chapter 17 Programming Tools 17-17
Typical BNF Rules for Java
Chapter 17 Programming Tools 17-18
Parsed English Sentence
Chapter 17 Programming Tools 17-19
The Compilation Process
Checks for errors
Generates CPU instructions or library calls
Updates internal tables
Chapter 17 Programming Tools 17-20
Process of Parsing
Lexical analysis Also known as scanning Divides the string of input characters into
single elements, tokens, based on strict computer punctuation
Syntactic analysis Checks for errors in grammar rules
Semantic parsing Determines the meaning of the string
Chapter 17 Programming Tools 17-21
Source Code Instructions Data declarations:
Data type such as floating point, integer Data operations
Instructions that update or compute data value (lots of moving around!)
Control Structures Branches, Goto (yetch!), If-then-else, loops such as
While-do and Repeat-until Function, procedure, or subroutine calls
Receives control via a call instruction, receives and possibly modifies parameters, and returns control to the instruction after the call
Chapter 17 Programming Tools 17-22
Recursive Descent Parsing
Chapter 17 Programming Tools 17-23
Optimization Compiler analyzes code in order to
Reduce amount of code Eliminate repeated operations Reorganize parts of of the program to execute faster
and more efficiently Use computer resources more effectively
Example Move a calculation repeated within the body of a
loop that does not use any value modified by the loop
Different compilers can produce different results!
Chapter 17 Programming Tools 17-24
Object file or object
module
Object file
C library
Executable file
Linker
Linking
Chapter 17 Programming Tools 17-25
Linkers
Searches program libraries to find library routines used by the program Library: collection of pre-written functions and
subroutines made available to perform commonly required activities
Determines the memory locations that code from each module will occupy and relocates instructions by adjusting absolute references
Resolves references among files
Chapter 17 Programming Tools 17-26
Why Link?
Construct single executable program from multiple object code files compiled at different times
Program can be subdivided into components and parceled out to different developers
Example Main program and multiple subroutines written and
compiled by different programmers at different times
Chapter 17 Programming Tools 17-27
Loader
Loads binary files that have been linked into main memory
Program is ready for execution
Chapter 17 Programming Tools 17-28
Interpreters Translates source code instructions into
machine language and executes it one statement at a time
Disadvantages Longer to execute, particularly bad for loops Uses more memory
Advantage Faster testing and code modification
Examples of interpreted languages Java, BASIC, LISP
Chapter 17 Programming Tools 17-29
Interpreter vs. Compiler
Resources during execution Interpreter Compiler
Contents in memory
Interpreter/compiler Yes No
Source code Partial No
Executable code Yes Yes
CPU cycles
Translation operations Yes No
Library linking Yes No
Application program Yes Yes
Chapter 17 Programming Tools 17-30
Debuggers
Assembly language debuggers Source code debuggers Step through programs Check variable values
Recommended