Chapter 17 Programming Tools

Document Sample
scope of work template
							Chapter 17
Programming Tools
 The Architecture of Computer Hardware
        and Systems Software:
    An Information Technology Approach
          3rd Edition, Irv Englander
         John Wiley and Sons 2003
Programming Tools Overview
  Editors                        Compilers
  Assemblers                     Linkers
  Debuggers                      Loaders
                                  Interpreters

    Integrated Development Environments (IDEs)
    combine several of the above programming tools




Chapter 17 Programming Tools                         17-2
The Program Translation Process


 Terms,
  terms, and                           Source
  more terms!
                          Translator   Object

                          Linker

                          Loader

                                       Executable
Chapter 17 Programming Tools                    17-3
Visual Basic IDE




Chapter 17 Programming Tools   17-4
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-5
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-6
 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-7
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-8
 What Does This Program Do?
          00   IN       901    ;input three numbers and save
          01   STO 99   399
          02   IN       901
          03   STO 98   398
          04   IN       901
          05   STO 97   397    ;subtract number in 98 from that in 97
          06   SUB 98   298    ;number in 97 larger
          07   BRP 10   811    ;number in 98 larger, restore 98
          08   LDA 98   598
          09   BR 11    611
          10   LDA 97   597    ;restore 97
          11   STO 96   396    ;store larger of (97, 98) in 96
          12   SUB 99   299    ;subtract number in 99 from larger
          13   BRP 16   816    ;number in 96 larger
          14   LDA 96   599    ;number in 99 larger, restore 99
          15   BR 17    617
          16   LDA 96   596    ;restore 96
          17   OUT      902
          18   COB      000
Chapter 17 Programming Tools                                            17-9
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-10
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-11
Object-Oriented Languages
  SmallTalk
  C++
  Java
       Based on C++
       Platform independent




Chapter 17 Programming Tools   17-12
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-13
Language Components
  Lexicon
       All legal words in the language
       Meaning and type
  Syntax
       grammar rules
  Semantics
       meaning of command


Chapter 17 Programming Tools              17-14
Computer Language Descriptions

  Narrative
  Syntax (Railroad) Diagrams
  BNF
       Backus-Naur Form
       Context-Free Grammar




Chapter 17 Programming Tools    17-15
Railroad Diagram Examples




Chapter 17 Programming Tools   17-16
Typical BNF Rules for Java




Chapter 17 Programming Tools   17-17
Parsed English Sentence




Chapter 17 Programming Tools   17-18
The Compilation Process

                               Updates
                               internal
      Checks for               tables
      errors



Generates CPU
instructions or
library calls

Chapter 17 Programming Tools       17-19
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-20
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-21
Recursive Descent Parsing




Chapter 17 Programming Tools   17-22
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-23
Linking

                               Object file


            Object                               Executable
        file or object                  Linker
                                                    file
           module



                                C library

Chapter 17 Programming Tools                                  17-24
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-25
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-26
Loader
  Loads binary files that have been linked
   into main memory
  Program is ready for execution




Chapter 17 Programming Tools             17-27
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-28
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-29
Debuggers
    Assembly language debuggers
    Source code debuggers
    Step through programs
    Check variable values




Chapter 17 Programming Tools       17-30

						
Related docs