28

10-2 What is the difference between machine code and C? Why use C? How do execution of C and Matlab programs differ? What are three methods of expressing

Embed Size (px)

Citation preview

Page 1: 10-2 What is the difference between machine code and C? Why use C? How do execution of C and Matlab programs differ? What are three methods of expressing
Page 2: 10-2 What is the difference between machine code and C? Why use C? How do execution of C and Matlab programs differ? What are three methods of expressing

10-2

• What is the difference between machine code and C?

• Why use C?

• How do execution of C and Matlab programs differ?

• What are three methods of expressing a program algorithm?

• Related Chapters: ABC Chapters 0 & 1 & 11.3

Page 3: 10-2 What is the difference between machine code and C? Why use C? How do execution of C and Matlab programs differ? What are three methods of expressing

Main Memory(RAM)

Input Devices

Output Devices

Auxiliary Storage

CPU

ControlUnit (CU)

Arithmetic-Logic Unit (ALU)

Me

mor

y A

ddr

ess

es

0 - 3 4 - 7

100 -107

108 -109

110 -121

..

instr1instr2

-75

label

....

101.101

System Unit

Page 4: 10-2 What is the difference between machine code and C? Why use C? How do execution of C and Matlab programs differ? What are three methods of expressing

10-4

Main (Internal) Memory:

• All data and instructions are stored in main memory as a sequence of 0’s and 1’s called Bits (Binary Digits)

• Byte (smallest addressable element of memory) Storage size for one character of information (ASCII-8 8 bits). Every (single) address refers to a byte in memory.

• 210 bytes is defined as 1 kilo-byte (1KB)220 bytes is defined as 1 mega-byte (1MB)230 bytes is defined as 1 giga-byte (1GB)

Page 5: 10-2 What is the difference between machine code and C? Why use C? How do execution of C and Matlab programs differ? What are three methods of expressing

10-5

Central Processing Unit (CPU):

• Transfers information into, out of, and between memory locations.

• Executes instructions stored in memory.

• Set of instructions for a CPU is known as a machine language.

• Each CPU (Intel Core i7, IBM PowerPC, ...) has its own specific machine language.

Page 6: 10-2 What is the difference between machine code and C? Why use C? How do execution of C and Matlab programs differ? What are three methods of expressing

Main MemoryMain Memory

Control Unit

Arithmetic/Logic Unit

12

34

Instruction Cycle

ExecutionCycle

Fetch Decode

ExecuteStore

CPURAM

Includes Cache(very fast memory)

Page 7: 10-2 What is the difference between machine code and C? Why use C? How do execution of C and Matlab programs differ? What are three methods of expressing

10-7

Classified asLow Level

• Machine Language

(binary-based code; machine dependent)

• Assembly Language

(mnemonic form of machine language)

Page 8: 10-2 What is the difference between machine code and C? Why use C? How do execution of C and Matlab programs differ? What are three methods of expressing

10-8

High Level• Closer to natural languages.

• Generally, machine independent

• Usually, several machine instructions are combined into one high-level instruction.

• Examples:

FORTRAN COBOL BASIC JavaPython Ada PL/I LispC GPSS C++ Matlab

Page 9: 10-2 What is the difference between machine code and C? Why use C? How do execution of C and Matlab programs differ? What are three methods of expressing

10-9

To illustrate differences in syntax for language levels, consider how a computer could be instructed to subtract two numbers stored in memory address locations 64 and 2048 and put the result in location 2048:

increment

value

64

2048

Memory Addresses

Variable Names

Page 10: 10-2 What is the difference between machine code and C? Why use C? How do execution of C and Matlab programs differ? What are three methods of expressing

10-10

• Machine Language:0111110000000100000000100000000000(6-bit OpCode, 14-bit address fields with

values 64 and 2048)

value

increment 64

2048

Memory Addresses

Variable Names

Page 11: 10-2 What is the difference between machine code and C? Why use C? How do execution of C and Matlab programs differ? What are three methods of expressing

10-11

• Assembly Language:

S increment,value

• C Language:value = value - increment;

value

increment 64

2048

Memory Addresses

Variable Names

Page 12: 10-2 What is the difference between machine code and C? Why use C? How do execution of C and Matlab programs differ? What are three methods of expressing

10-12

Programs written in high-level languages must be converted to machine language.

Two approaches:

(1) Compilation (see p. 28 FER Figure 2.4)Used with C, C++, Fortran,...

(2) InterpretationUsed with Matlab, Visual Basic,...

Page 13: 10-2 What is the difference between machine code and C? Why use C? How do execution of C and Matlab programs differ? What are three methods of expressing

Step 1) Use editor to create a “source” file.We will name source files with a suffix “.c”

Step 2) Run the gcc compiler on the source file to create anexecutable or object file with the default name a.out .

For CS101 we will only create executable files.

Step 3) Check to see if gcc caught any syntax errors , if so go back to step 1)

Step 4) Run the program by typing> ./a.out

at the Unix prompt

Page 14: 10-2 What is the difference between machine code and C? Why use C? How do execution of C and Matlab programs differ? What are three methods of expressing

10-14

Computer programming is the art/science of transforming a “real world” problem into a finite sequence of instructions(statements) in a computer language.

The method stated in the following slide will be used throughout the rest of the semester.

Follow this method in your Labs and for any Machine Problem.

Page 15: 10-2 What is the difference between machine code and C? Why use C? How do execution of C and Matlab programs differ? What are three methods of expressing

10-15

1. Requirements Specification (Problem Definition)

2. Analysis---Refine, Generalize, Decompose the problem definition

(i.e., identify sub-problems, I/O, etc.)3. Design---Develop Algorithm

(processing steps to solve problem)Use one of the following:

Natural-Language AlgorithmFlowchart AlgorithmPseudo-code Algorithm

4. Implementation --- Write the "Program" (Code)

5. Verification and Testing --- Test and Debug the Code

Page 16: 10-2 What is the difference between machine code and C? Why use C? How do execution of C and Matlab programs differ? What are three methods of expressing

10-16

1. Requirements Specification (Problem Definition)Given a light-bulb with a pre-measured power consumption(in watts), compute the resistance (in ohms) of the bulb.

2. Analysis---Refine, Generalize, Decompose the problem definition

(i.e., identify sub-problems, I/O, etc.) Input = real number representing power

Output=real number representing resistance

Page 17: 10-2 What is the difference between machine code and C? Why use C? How do execution of C and Matlab programs differ? What are three methods of expressing

10-17

3. Design---Develop Algorithm

Natural-Language Algorithm

Prompt user for the power dissipation

Read power

Store value in storage location called power.

Compute the resistance solving the formula

“power = (voltage*voltage)/resistance” in terms of resistance.

resistance = (voltage * voltage)/ power

Print out the value stored in location resistance.

Page 18: 10-2 What is the difference between machine code and C? Why use C? How do execution of C and Matlab programs differ? What are three methods of expressing

10-18

3. Design---Develop Algorithm

Pseudo-code Algorithm

print “enter power in watts”

read power

resistance = (117.0 * 117.0)/power

print resistance

Page 19: 10-2 What is the difference between machine code and C? Why use C? How do execution of C and Matlab programs differ? What are three methods of expressing

start

Compute: resistance=(117*117)/power

Output::resistance

stop

3. Design---Develop Algorithm

Flowchart Algorithm

Input : power

Output : “enter power in watts”Flow is assumed down unless otherwise specified with an arrow.

Trapezoid used to designate I/O.

Rectangle used to designate one or more statements in a block.

Circle used as continuation symbol for transfer to another page.

Page 20: 10-2 What is the difference between machine code and C? Why use C? How do execution of C and Matlab programs differ? What are three methods of expressing

10-20

4. Implementation --- Write the "Program" (Code) (see the next slide)

The lecture slides show the use of the gediteditor but the choice of editor is not critical.

Page 21: 10-2 What is the difference between machine code and C? Why use C? How do execution of C and Matlab programs differ? What are three methods of expressing

C Code Implementation of the Algorithm

/* C Program to compute the resistance *//* of a light-bulb.*/#include <stdio.h>#define VAC 117.0

void main(void){ /* Declare variables. */ float power, resistance; /* request user input power of */ /* light-bulb in watts. */ printf(”Please enter power(watts) :”); /* read value power */ scanf("%f", &power); /* Compute resistance assuming VAC = 117. */ resistance = (VAC * VAC) /power; /* Output the calculated resistance. */ printf(”Resistance is %f (ohms)\n", resistance);}(Note indentation scheme in above code.)

Page 22: 10-2 What is the difference between machine code and C? Why use C? How do execution of C and Matlab programs differ? What are three methods of expressing

C program compilation Open gedit and enter your code. Note the & .

Page 23: 10-2 What is the difference between machine code and C? Why use C? How do execution of C and Matlab programs differ? What are three methods of expressing

C program compilationClick the “Save” button in gedit to save your code but don’t close the gedit window. Click on the xterm window and type the command to compile your code.

Page 24: 10-2 What is the difference between machine code and C? Why use C? How do execution of C and Matlab programs differ? What are three methods of expressing

Use the “gcc” program to compile your C source code in the file “resistance.c”.

> ls

resistance.c resistance.c~

Note: backup files begin and/or end with a ~ or a # symbol. Do not edit or compile these files!

> gcc resistance.c

The “gcc” program will not alter the file “resistance.c”. The output of “gcc” is by default contained in the file “a.out”. The file “a.out” is called an executable file. (continued on next slide)

C program compilation

Page 25: 10-2 What is the difference between machine code and C? Why use C? How do execution of C and Matlab programs differ? What are three methods of expressing

C program compilation

Note that the “gcc” program noted an error on line 18 in the program and “gcc” generated a warning for line 7.Also, note that there is no a.out file listed. Errors cause gcc to abort and you will not get an a.out file.

Go back to gedit line 18 and fix the syntax error. (continued on next slide)

Page 26: 10-2 What is the difference between machine code and C? Why use C? How do execution of C and Matlab programs differ? What are three methods of expressing

The error on line 18 was actually caused by a missing semicolon on line 16. In C a semicolon means “end of statement”. This differs from Matlab where a semicolon means suppress output and is optional. Since there was no semicolon after line 16, C assumed that lines 16 - 18 represented one C statement. That is incorrect syntactically, so gcc (the compiler program or compiler for short) generated an error message and terminated before producing an a.out file.

Page 27: 10-2 What is the difference between machine code and C? Why use C? How do execution of C and Matlab programs differ? What are three methods of expressing

C program compilation

After adding a semicolon to the end of line 16, Click “Save” in gedit and go back to the xterm and type again...

Note: The dot-slash in “ ./a.out ” means “ in this working directory”. If you type “ a.out ” at the Unix prompt Unix will first search your home directory for a file “ a.out ”. Of course this would not be the same “ a.out ” file you created in another directory.

Page 28: 10-2 What is the difference between machine code and C? Why use C? How do execution of C and Matlab programs differ? What are three methods of expressing

10-28

A CPU only executes machine code which consists of instructions that are specific to a particular manufacturer. The machine code is a sequence of ones and zeros. The C language is more human-language-like than machine code and can be converted to machine code by using a compiler (gcc in CS101). C code is more portable than machine code.

In the design and development of an algorithm we can use any combination of “Natural Language”, “Pseudo-code” and “Flow-chart” .

Matlab code is executed by means of an interpreter that is running in the Matlab “environment”. Each time the Matlab code runs the interpreter converts the code into machine code.

C code is compiled into an executable file (machine code) once. We then run the program (default name a.out) by typing the command (./a.out)_at the Unix prompt.