SSA mine

Embed Size (px)

Citation preview

  • 8/7/2019 SSA mine

    1/14

    KCG College of Technology,Chennai-96

    Computer Science and Engineering

    CS 1203 SYSTEM SOFTWARE III Sem CSE

    QUESTION BANK - UNIT-II ASSEMBLERS

    1) Why an Assembly Language is needed?

    Programming in machine code, by supplying the computer with the numbers of the operations it must perform,

    can be quite a burden, because for every operation the corresponding number must be looked up or remembered.Looking up all numbers takes a lot of time, and mis-remembering a number may introducecomputer bugs.

    So Assembly Languages are evolved which contains mnemonic instructions corresponding to the Machine codesusing which the program can be written easily.

    Therefore a set of mnemonics was devised. Each number was represented by an alphabetic code. So instead ofentering the number corresponding to addition to add two numbers one can enter "add".

    Although mnemonics differ between differentCPU designs some are common, for instance: "sub" (subtract),"div" (divide), "add" (add) and "mul" (multiply).

    2) What is an Assembler?An assembler is a program that accepts an assembly language program as input and produces its machine

    language equivalentalong with information for the loader(An Assembler translates a program written in an assembly language to it machine language equivalent)

    3) Explain the terms a)Label,b)Opcode,c)Operand,and d)Comment

    (What is the format in which the assembly language program is written?).

    Label field.o The label is a symbolic name that represents the memory address of an executable statement or a

    variable.

    Opcode/directive fields.o The opcode (e.g. operation code) specifies the symbolic name for a machine instruction.

    o The directive specifies commands to the assembler about the way to assemble the program.

    Operand field.

    o The operand specifies the data that is needed by a statement.

    Comment field.

    o The comment provides clear explanation for a statement.

    4) What are the basic functions of an assembler?Functions of a Basic Assembler

    Convert mnemonic operation codes to theirmachinelanguage equivalents

    E.g. STL -> 14 (line 10)

    Convertsymbolic operands to their equivalentmachine addresses

    E.g. RETADR -> 1033 (line 10)

    Build the machine instructions in the proper format

    Convert the data constants to internal machinerepresentations

    E.g. EOF -> 454F46 (line 80)

    Write the object program and the assembly listing

    http://en.wikipedia.org/wiki/Computer_bughttp://en.wikipedia.org/wiki/Computer_bughttp://en.wikipedia.org/wiki/CPU_designhttp://en.wikipedia.org/wiki/CPU_designhttp://en.wikipedia.org/wiki/Computer_bughttp://en.wikipedia.org/wiki/CPU_design
  • 8/7/2019 SSA mine

    2/14

    5) What are assembler Directives?

    Assembler directives are Pseudo-instructions that are not translated into machine instructions and theyprovide instructions to the assembler itself.

    The SIC assembler directives.

    o START

    Specification of the name and start address of the program.

    o END

    Indication of the end of the program and optionally the address of the first executableinstruction.

    o BYTE

    Declaration of character or string constants.o WORD

    Declaration of integer constants.o RESB

    Declaration of character variables or arrays.o RESW

    Declaration of integer variables or arrays.

    6) What are the functions of two pass assembler?

    Functions of Two Pass Assembler

    Pass 1 - define symbols (assign addresses)

    o Assign addresses to all statements in the program

    o Save the values assigned to all labels for use in Pass 2

    o Process some assembler directives

    Pass 2 - assemble instructions and generate object program

    Assemble instructionso Generate data values defined by BYTE, WORD, etc.

    o Process the assembler directives not done in Pass 1

    o Write the object program and the assembly listing

    DefinitionsLoading

    Copies a object program into memory for execution.Relocation

    Modifies an program so it can be loaded at a locationdifferent from the one specified at assembly or compilation.

    Linking

    Combines two or more object files and the referencesbetween them.Loader

    System program that performs the loading function.Linker or Linkage Editor

    Performs the linking function.

    Pass 1 Pass 2Intermediate

    fileObject

    codes

    Source

    program

    OPTAB SYMTAB SYMTAB

  • 8/7/2019 SSA mine

    3/14

    Compilers & assemblers for a given machine produce files in the same format.7) Define Loading,Relocation and Linking.

    8) What is the basic function of a loader?

    The most fundamental functions of a loader:Bringing an object program into memory and starting its execution

    9) What are the characteristics of an absolute loader?

    No linking and relocation needed

    Records in object program perform

    Header recordo Check the Header record for program name, starting address, and length (available memory)

    Text recordo Bring the object program contained in the Text record to the indicated address

    End recordo Transfer control to the address specified in the End record

    10) Write an algorithm for an absolute loader.

    Algorithm for an absolute loader

  • 8/7/2019 SSA mine

    4/14

    11) What is a bootstrap loader?

    When a computer is first tuned on or restarted, a special type of

    absolute loader, the bootstrap loader loads the first program (usuallyO.S.) to be run into memory

    12) Explain SIC bootstrap loader.

    The bootstrap itself begins at address 0

    It loads the OS starting address 0x80

    No header record or control information, the object code is consecutive bytes of memory

    After load the OS, the control is transferred to the instruction at address 80.

    Bootstrap loader for SIC/XEbegin

    X=0x80 ; the address of the next memory location to be loadedLoop

    AGETC ; read one char. From device F1 and convert it from the

    ; ASCII character code to the value of the hex digit

    save the value in the high-order 4 bits of SAGETCA (A+S) ; combine the value to form one byte

    store the value (in A) to the address represented in register XXX+1

    End

    13) What are the disadvantages of absolute loaders?

    Drawback of absolute loaders

    o Programmer needs to specify the actual address at

    o which it will be loaded into memory.

    o Difficult to run several programs concurrently,

    o sharing memory between them.

    o Difficult to use subroutine libraries.

    o Solution: a more complex loader that provides

    o Program relocation Program linking

    14) What are relocatable loaders? What are different types of relocatable loaders?

    Loaders that allow for program relocation are calledrelocating loaders orrelative loaders.o Two methods for specifying relocation as part of theobject program

    Modification records

    o Suitable for asmallnumber of relocations required when relative

  • 8/7/2019 SSA mine

    5/14

    or immediate addressing modes are extensively usedRelocation bits

    o Suitable for a large number of relocations required when only

    direct addressing mode can be used in a machine with fixedinstruction format (e.g., the standard SIC machine)

    15) What is linking?

    Linking, which combines two or more separate object programs and supplies the information needed to allowreferences between them .

    16) What are loader design options?

    Loader Design Options Linking loaders

    Perform all linking and relocation at load time

    Linking editors

    o Perform linking before the program is loaded for execution.

    Dynamic linking

    Perform linking at execution time

    17) What is dynamic linking? Explain with an example.

    Dynamic Linking refers to postponing the linking function until execution time.

    o A subroutine is loaded and linked to the rest of the program when it is first called

    (Dynamic linking, dynamic loading, or load on call)

    Allow several executing programs to share one copy of a subroutine or library

    In object-oriented system, it allows the implementation of the object and its methods to be

    determined at the time the program is run

    Dynamic linking provides the ability to load the routines only when they are needed

  • 8/7/2019 SSA mine

    6/14

    Dynamically loaded must be called via an operating system service request

    Load-and-call service

    o OS examines its internal tables to determine whether or not the routine is already loaded

    o Routine is loaded from library

    o Control is passed from OS to the called subroutine

    o Subroutine is finished

    o Calling to a subroutine which is already in memory

    Dynamic Linking :Bindingof the name to an actual address is delayed from load time untilexecution time

    18) What are the advantages of dynamic linking?

    Dynamic Linking

    Advantages

    Load the routines when they are needed, the time

    and memory space will be saved.

    Avoid the necessity of loading the entire library for each execution

    o i.e. load the routines only when they are needed

    Allow several executing programs to share one copy of a subroutine or library (Dynamic Link Library,DLL)

    11) What is the difference between linking loader and linkage editors?

    A linking loader performs

  • 8/7/2019 SSA mine

    7/14

    o All linking and relocation operations

    o Automatic library search

    o Loads the linked program directly into memory for execution

    A linkage editor

    o Produces a linked version of program (often called a load module or an executable

    image), which is written to a file or library for later executiono A simple relocating loader can be used to load the linked version of program into

    memory The loading can be accomplished in one pass with no external symbol table

    required

    A linkage editor

    o Resolution of external references and library searching are only performed onceo In the linked version of programs

    All external references are resolved, and relocation is indicated by some

    mechanism such as modification records or a bit masko External references is often retained in the linked program

    To allow subsequent relinking of the program to replace control sections,modify external references, etc.

    Linking Loader vs. Linkage Editor

    Linking loader

    o Searches libraries and resolves external references every time the program is executed.

    o Avoid the writing and reading the linked program.

    Linkage editor

    o Resolution of external reference and library searchingare only performed once

    Linking loader Suitable when a program is reassembled for nearly every execution

    In a program development and testing environment

    When a program is used so infrequently that it is not

    worthwhile to store the assembled and linked version.

    Linkage editorIf a program is to be executed many times without being reassembled, the use of a linkage editor substantiallyreduces the overhead required

  • 8/7/2019 SSA mine

    8/14

    UNIT IV MACRO PROCESSORS 9

    Basic macro processor functions - Macro Definition and Expansion Macro Processor Algorithm and data structures - Machine-independent macro processor features - Concatenation of Macro Parameters Generation of Unique Labels Conditional MacroExpansion Keyword Macro Parameters-Macro within Macro-Implementation example - MASM Macro Processor ANSI C Macrolanguage.

    19) Define Macro.

    A macro instruction (macro) is a notational convenience for the programmer.

    It allows the programmer to write a shorthand version of a program

    o A macro represents a commonly used group of statements in the source programming

    language.

    o Expandingthe macros - the macro processorreplaces each macro instruction with the

    corresponding group of source language statements.20) What is a macro processor?

    A macro processor - Essentially involve the substitution of one groupof characters or lines for another. Normally, it performs no analysis of the text ithandles. It doesnt concern the meaning of the involved statements during macro expansiono The design of a macro processor generally is machine independent.

    Three examples of actual macro processors:o A macro processor designed for use by assembler language programmers

    o Used with a high-level programming languageo General-purpose macro processor, which is not tied to any particular language

    21) What are the basic macro processor functions?

    Basic Macro Processors Functions

    Macro processorshould processes the

    Macro definitionso Define macro name, group of instructions

    Macro invocation (macro calls)

    o A body is simply copied or substituted at the point of call Expansion with substitution of parametersoArguments are textually substituted for theparameters

    o The resulting procedure body is textuallysubstituted for the call

    22) What are the Assembler directives used for Macro Definition?

    Macro Definition

    Two new assembler directives are used in macro definition:MACRO: identify the beginning of a macro definition

    MEND: identify the end of a macro definitiono label op operandsname MACRO parameters

    :body

    :MEND

    o Parameters: the entries in the operand field identify theparameters of the macro instruction

    We require each parameter begins with &o Body: the statements that will be generated as the expansion of the macro.o Prototype for the macro:The macro name andparameters define a pattern orprototype for the macro instructions used by the

    programmer

  • 8/7/2019 SSA mine

    9/14

    7) What is Macro Expansion? Give an example.

    Macro ExpansionEach macro invocation statement will be expandedinto the statements that form the body of the macro.

    o Arguments from the macro invocation are substitutedfor the parameters in the macro prototype.The arguments and parameters are associated with one another according to theirpositions.

    o The first argument in the macro invocation corresponds to the first parameter in the macro prototype,etc.

    8)Explain the functions of two pass macro processor.

    Two-pass macro processor

    o Two-pass macro processor

    o Pass1: process all macro definitions

    o Pass2: expand all macro invocation statements

    o Problem

    Does not allow nested macro definitionso Nested macro definitions

    o The body of a macro contains definitions of other macros

    Because all macros would have to be defined during the

    first passbefore any macro invocations were expandedo Solution

    One-pass macro processor9) What is the characteristic of one pass macro processor?

    One-pass macro processor

    Every macro must be defined before it is called

    One-pass processor can alternate between macrodefinition and macro expansion

    Nested macro definitions are allowed

    10) What are the data structures used by the macro processor?

    Data Structures

    o MACRO DEFINITION TABLE (DEFTAB)

    Macro prototype

    States that make up the macro body

    Reference to parameters are converted to a positional notation.

    o MACRO NAME TABLE (NAMTAB)

    Role: an index to DEFTAB

    Pointers to the beginning and end of the definition in DEFTABo MACRO ARGUMENT TABLE (ARGTAB)

    Used during the expansion

    Invocation Arguments are stored in ARGTAB according to their position

    TEXT-EDITORSThese are the primary interface to the computer for all types of Knowledge workers as they compose,organize,study andmanipulate computer-based information.1)Give an overview of the editing process.An interactive editor is a computer program that allows a user to create and revise a target document.The term document includes objects such as computer programs,texts,equations,tables,diagrams,line arts andphotographs-anything that one might find on a printed page.Text editor is one in which the primary elements being edited are character strings of the target text.The document editing process is an interactive user-computer dialogue designed to accomplish four taks :

    1) Select the part of the target document to be viewed and manipulated2) Determine how to format this view on-line and how to display it.3) Specify and execute operations that modify the target document.4) Update the view appropriately.

    Traveling Selection of the part of the document to be viewed and edited. It involves first traveling through thedocument to locate the area of interest such as next screenful,bottom,and find patternTraveling specifies where the area of interest is;Filtering : The selection of what is to be viewed and manipulated is controlled by filtering.Filtering extracts the relevant subset of the target document at the point of interest,such as next screenful of text ornext statement.

  • 8/7/2019 SSA mine

    10/14

    Formatting : Formatting then determines how the result of filtering will be seen as a visible representation(the view)on a display screen or other device.Editing : In the actual editing phase ,the target document is created or altered with a set of operations such asinsert,delete,replace,move or copy.Manuscript oriented editors operate on elements such as single characters,words,lines,sentences,and paragraphs;Program-oriented editors operates on elements such as identifiers,key words and statements

    2) Explain the User-Interface of an Editor.

    The user of an interactive editor is presented with a conceptal model of the editing system. The model is an abstractframework on which the editor and the world on which the operations are based.Some of the early line editors simulated the world of 80-character card image lines.The Screen-editors define a world in which a document is represented as a quarter-plane of text lines.unboundedboth down and to the right. The user sees ,through a cutout ,only a rectangular subset of this planeon a multi linedisplay terminal. The cutout can be move left or right ,and up or down ,to display other portions of the document.The user interface is also concerned with the input devices,the output devices,and the interaction language of thesystem.Input Devices : The input devices are used to enter elements of text being edited ,to enter commands,and todesignate editable elements.INPUT DEVICES are categorized as :1)Text devices2)Button devices3)Locator devices

    1)Text or string devices are typically typewriter like keyboards on which user presses and release keys ,sendingunique code for each key. Virtually all computer key boards are of the QWERTY type.

    2)Button or Choice devices generate an interrupt or set a system flag,usually causing an invocation of anassociated application program. Also special function keys are also available on the key board.3)Locator devices : They are two-dimensional analog-to-digital converters that position a cursor symbol on thescreen by observing the users movement of the device. The most common such devices are the mouse and thetablet.The Data Tablet is a flat ,rectangular,electromagnetically sensitive panel. Either the ballpoint pen like stylus orapuck,a small device similar toa mouse are moved over the surface. The tablet returns to a system program the co-ordinates of the position on the data tablet at which the stylus or puck is currently located. The program can thenmap these data-tablet coordinates to screen coordinates and move the cursor to the corresponding screen position.

    .Text devices with arrow(Cursor) keys can be used to simulate locator devices. Each of these keys shows an arrowthat points up,down,left,or right.Pressing an arrow key typically generates an appropriate character sequence ,theprogram interpretsw this sequence and moves the cursor in the direction of the arrow on the key pressed.Voice-input Devices : ,which translate spoken words to their textual equivalents,may prove to be the text inputdevices of the future

    OUTPUT DEVICESThe output devices let the user view the elements being edited and the result of the editing operations. The first

    output devices were teletypewriters and other character-printing terminals that generated output on paper. NextCRT(Cathode Ray Tube) technology which uses CRT screen essentially to simulate the hard-copy teletypewriter. Todaysadvanced CRT terminals use hardware assistance for such features as moving the cursor,inserting and deletingcharacters and lines,and scrolling lines and pages.

    Interaction Language : The interaction language of the text editor is generally one of several common types.1) The typing oriented or text command-oriented methodis the oldest of the major editing interfaces. The user communicate with the editor by typing text stringsboth for commandnames and and for operands. These strings are sent to the editor and are usually echoed to the output device.

    Typed specification often requires the user to remember the exact form of all commands ,or at least theirabbreviations.

    He Help facility have to be used or manuals have to be refered. Time consuming for in-experienced users.2) Function key interfaces :Each command is associated with marked key on the key boardEg Insert key,Shift key,Control key

    3)Menu oriented interfacesA menu is a multiple choice set of text strings or icons which are graphical symbols that represent objects or operationsThe user can perform actions by selecting items for the menusThe editor prompts the user with a menuOne problem with menu oriented system can arise when there are many possible actions and several choices arerequired to complete an action. The display area of the menu is rather limited.E

    3) Explain with a neat diagram the structure of an Editor.t

    +

  • 8/7/2019 SSA mine

    11/14

    Typical Editor Structure

    Most Text editors have a structure similar to that shown above.The command Language Processoraccepts input from the users input devices,and analyzes the tokens and syntacticstructure of the commands. It functions much like the lexical and syntactic phases of a compiler. The command languageprocessor may invoke the semantic routines directly. In a text editor,these semantic routines perform functions lsuch asediting and viewing.

    The semantic routines involve travelling,editing,viewing,and display functions.Editing operations are always specified by the user

    .In editing a document,the start of the area to be edited is determined by the current editing pointermaintained by

    the editing component ,which is the collection of modules dealing with editing tasks. The current editing pointer can be setor reset explicitly by the user using travelling commands ,such as next paragraph and next screen,or implicitly as a sideeffect of the previous editing operation such as delete paragraph.The traveling component of the editor actually performs the setting of the current editing and viewing pointers,and thusdetermines the point at which the viewing and /or editing filtering begins.

    When the user issues an editing command,the editing component invokes the editing filter. This component filters thedocument to generate a new editing buffer based on the current editing ponter as well as on the editing filter parameters.These parameters,which are specified by both by the user and the system,provide information such as the range of thetext that can be affected by an operation. Filtering may consist of the selection of contiguous characters beginning at thecurrent point.

    Similarly,in viewing a document ,the start of the area to be viewed is determined by the current viewing pointer. Thispointer is maintained by the viewing component of the editor,which is a collection of modules responsible for determiningthe next view.The current viewing pointer can be set or resetexplicitly by the user or implicitly by the systemas a result of previousediting operation.When the display needs to be updated,the viewing component invokes the viewing filter.This componet filters the document to generate a new viewing buffer based on the current viewing pointer as well as onthe viewing filter parameters.

    In Line editors,the viewing buffer may contain the current line; in screen editors,this buffer may contain rectangular cutout of the quarter-plane of text. This viewing buffer is then passed to the display component of the editor,which producesa display by mapping the buffer to a rectangular subset of the screen,usually called a window.

    The editing and viewing buffers,while independent,can be related in many ways. Ina simplest case ,they areidentical:theuser edits the material directly on the screen.On the other hand ,the editing and viewing buffers may becompletely disjoint.

    EG The user of a certain editor might travel to line 75,and after viewing it,decide to change all occurrences of uglyduckling to swan in lines 1 through 50 of the file by using a change command such as[1,50] c/ugly duckling/swan/

    Editingcomponent

    Travelingcomponent

    Viewingcomponent

    Commandlanguageprocessor

    Editingbuffer

    Editingfilter

    ViewingfilterViewing

    buffer

    Mainmemory

    Filesystem

    Displaycomponent

    Outputdevices

    input

    Typical Editor structure

    PagingRoutines

    Control

    Data

  • 8/7/2019 SSA mine

    12/14

    As apart of the editing command there is implicit travel to the first line of the file. Lines 1 through 50 are then filtered fromthe document to become the editing buffer.Successive substitutions take place in this editing buffer without correspoingupdates of the view

    Windows typically cover the entire screen or rectangular portion of it.Mapping viewing buffers to windows that cover only part of the screen isespecially useful for editors on modern graphics based workstations.Such systems can support multiple windows, simultaneously showingdifferent portions of the same file or portions of different file. Thisapproach allows the user to perform interfile editing operations muchmore effectively than with a system only a single window.The mapping of the viewing buffer to a window is accomplished by twocomponents of the system. First, the viewing component formulates anideal view often expressed in a device independent intermediaterepresentations. This view may be a very simple one consisting of awindows worth of text arranged so that lines are not broken in themiddle of words. At the other extreme, the idealised view may be afacsimile of a page of fully formatted and typeset text with equations,

    Editors function in three basic types

    of computing environments:

    Time sharingStand-aloneDistributed

    Each type of environment imposes someconstraints on the design of an editor

  • 8/7/2019 SSA mine

    13/14

    tables and figures. Second the display components takes these idealisedview from the viewing component and maps it to a physical outputdevice the most efficient manner possible.The components of the editor deal with a user documents on two levels:in main memory and in the disk file system. Loading an entiredocument into main memory may be infeasible. However i f only part ofa document is loaded and if many user specified operations require adisk read by the editor to locate the affected portions, editing might be

    unacceptably slow. In some systems this problem is solved by themapping the entire file into virtual memory and letting the operatingsystem perform efficient demand paging .An alternative is to provide isthe editor paging routines which read one or more logical portions of adocument into memory as needed. Such portions are often termedpages, although there is usually no relationship between these pagesand the hard copy document pages or virtual memory pages. Thesepages remain resident in main memory until a user operation requiresthat another portion of the document be loaded.Editors function in three basic types of computing environment:time-sharing, stand-alone and distributed. Each type ofenvironment imposes some constraint on the design of an editor. Thetime sharing editor must function swiftly within the context of the loadon the computerprocessor, central memory and I/O devices. Theeditor on a stand-alone system must have access to the functions thatthe time sharing editors obtain from its host operating system. This maybe provided in pare by a small local operating system or they may be

    built into the editor itself if the stand alone system is dedicated toediting. The editor operating in a distributed resource sharing localnetwork must, like a stand alone editor, run independently on eachusermachine and must, like a time sharing editor, content for sharedresources such as files.

    5) What is a debugger?A debuggeris a computer programthat is used to test anddebugother programs.When the program crashes, the debugger shows the position in the original code if it is a source-level debuggerorsymbolic debugger, commonly seen inintegrated development environments(IDEs) Typically, debuggers also offer more sophisticated functions such as running a program in the following manner

    step by step (single-stepping)

    stopping (breaking) (pausing the program to examine the current state) at some kind of event by means ofbreakpoint, and tracking the values of some variables.

    Some debuggers have the ability to modify the state of the program while it is running, rather than merely to

    observe it.

    6) What are interactive debug systems?An interactive debugging system provides programmers with facilities that aid in testing and debugging of programsinteractivelyDebugging Functions and CapabilitiesOne important requirement of any IDS is the observation and control of the flow of program executionSetting break points execution is suspended, use debugging commands to analyze the progress of the program,rsum execution of the programSetting some conditional expressions, evaluated during the debugging session, program execution is suspended,when conditions are met, analysis is made, later execution is resumedA Debugging system should also provide functions such as tracing and tracebackTracing can be used to track the flow of execution logic and data modificationsThe control flow can be traced at different levels of detail procedure, branch, individual instruction, and so onTraceback can show the path by which the current statement in the program was reachedIt can also show which statements have modified a given variable or parameterThe statements are displayed rather than as hexadecimal displacements

    How functions are providedTo provide these functions, a debugger should consider the language in which the program being debugged iswrittenA single debugger many programming languages language independentThe debugger - a specific programming language language dependentThe debugger must be sensitive to the specific language being debugged

    The context being used has many different effects on the debugging interactionThe statements are different depending on the languageCobol - MOVE 6.5 TO XFortran - X = 6.5C - X = 6.5

    http://en.wikipedia.org/wiki/Computer_programhttp://en.wikipedia.org/wiki/Computer_programhttp://en.wikipedia.org/wiki/Debughttp://en.wikipedia.org/wiki/Debughttp://en.wikipedia.org/wiki/Debughttp://en.wikipedia.org/wiki/Integrated_development_environmenthttp://en.wikipedia.org/wiki/Integrated_development_environmenthttp://en.wikipedia.org/wiki/Integrated_development_environmenthttp://en.wikipedia.org/wiki/Breakpointhttp://en.wikipedia.org/wiki/Breakpointhttp://en.wikipedia.org/wiki/Computer_programhttp://en.wikipedia.org/wiki/Debughttp://en.wikipedia.org/wiki/Integrated_development_environmenthttp://en.wikipedia.org/wiki/Breakpoint
  • 8/7/2019 SSA mine

    14/14

    Examples of assignment statementsWhat about optimized code ?It is also important that a debugging system be able to deal with optimized codeMany optimizations like

    - invariant expressions can be removed fromloops

    - separate loops can be combined into a singleloop

    - redundant expression may be eliminated- elimination of unnecessary branch instructionsLeads to rearrangement of segments of code in the programAll these optimizations create problems for the debugger, and should be handled carefullyRelationship with Other Parts of the SystemThe important requirement for an interactive debugger is that it always be availableMust appear as part of the run-time environment and an integral part of the systemWhen an error is discovered, immediate debugging must be possibleThe debugger must communicate and cooperate with other operating system components such as interactivesubsystemsDebugging is more important at production time than it is at application-development timeWhen an application fails during a production run, work dependent on that application stopsThe debugger must also exist in a way that is consistent with the security and integrity components of the systemThe debugger must coordinate its activities with those of existing and future language compilers and interpreters