Skip to main content

Compilation and compilers

A compiler is a program that reads a program written in one language, the source language and translate into an equivalent program in another language that is target language.




                                Compiler view


Compilers are sometimes classified as single pass, multi pass, load-and-go, debugging or optimising, depending on how they have been constructed.

Bootstrap compiler: For bootstrapping, a compiler is characterized by 3 languages; the source language "S" that compile the target language "T" that generates code for and implementation language "I" that it is written in. We represent them using following diagram:

Phases of a compiler:
conceptually compiler operates in phases, each of which transforms the source program from one representation to another. 
the first three pages from the bulk of the analysis portion of a compiler.
Lexical analysis:
in a compiler, linear analysis is called lexical analysis or scanning. For example, in lexical analysis the characters in the assignment statement
               Position := initial + rate * 60
Would be grouped into the following tokens:
The identifier (position)
The assignment symbol (:=)
The identifier (initial)
The Plus sign (+)
The identifier (rate)
The multiplication sign (*)
The number (60)
The blanks separating the characters of these token would normally be eliminated during lexical analysis.
Intermediate code generation:
after syntax and semantic analysis some compiler generate an explicitly intermediate representation of the source program. This intermediate representation should have two important properties; it should be easy to produce and easy to translate into the target program.
The intermediate representation can have a variety of forms.
We consider an intermediate form called "three-address-code" which is like the assembly language for a machine in which every memory location can act like a register. Three address code consists of sequence of instructions, each of which has at most three operands. The source program might appear in three address code as:
temp 1 := int to real (60)
temp 2 := id3 * temp1
temp 3 := id2 + temp2
idl := temp 3
This intermediate form has several properties. First, each three address instruction has at most one operator in addition to the assignment. Thus, when generating these instructions, the compiler has to decide on the order in which operations are to be done; the multiplication precedes the addition in the source program. Secondly, the compiler was generated temporary name to hold the value computed by each instruction. Third, some "three address instructions" have fewer than three operands example the first and last instruction in 4.



Comments

Popular posts from this blog

Hub, repeater, switch, router, gateway, bridge

HUB Hub is a controller that controls the traffic on the network.  The following important properties of hub are:  1) It amplify signals. 2) It propagates signals through the network. 3) It does not require filtering. 4) It does not require path determination for switching. 5) It is used as network concentration points. Hubs are basically two types: 1) Active hub 2) Passive hub Active hub: A ctive hub works as repeater which is a hardware device that regenerates the received bit pattern before sending them out . Passive hub : A passive hub is a simple hardware device which provide a simple physical connection between the attached devices. Advantages of hub: It cannot filter the traffic full stop feeling generally refers to a process or device that screens network traffic for certain characteristics such as source address and destination address and protocol. Disadvantages of hub: On a hub, more than one user may try to send data on the network at sam

Scheduling: preemptive scheduling

Preemptive Scheduling : In contrast to non preemptive scheduling, a scheduling decision can be made even while the job is executing whereas in non preemptive scheduling, a scheduling decision is made only after job completes its execution. Therefor preemptive scheduling may force a job in execution to release the processor, so that the execution of some other job can be undertaken, in order to improve throughput considerably. Types of preemptive scheduling: 1) Round Robin scheduling algorithm : the round Robin scheduling is designed for time sharing systems. The primary objective of round Robin scheduling are interactive use, good response time and sharing the resources equitable among processes. It is similar to FCFS, but preemption is added to switch between processes. The processes are alocated a small unit of time. Known as time Quantum or time slice is in rotation until the completion of processes. To implement round Robin scheduling, a FIFO(first in first out) queue

Scheduling: Non-Preemptive Scheduling

Scheduling : In multi-programmed computer, multiple processes competing for the CPU at the same time. This situation occurs whenever two or more processes are simultaneously in the ready state. If only one CPU is available. Then we need a system that decide which process run first and then next and this will be done by the scheduler. Scheduler : scheduler is an operating system module that she loves an axe top to be admitted into the system and then the next process to run. Scheduling is of two type: 1) Pre-emptive 2) Non pre-emptive Non Pre-emptive Scheduling : In batch non Pre-emptive scheduling implies that, once scheduled, selected job runs to completion. In other words, the running process not forced to relinquish ownership of the processor when a higher priority process becomes ready for execution. The scheduling techniques which use non preemptive scheduling are: 1) first come first serve (FCFS) scheduling 2) shortest job next (SJN) scheduling 3) dea