0% found this document useful (0 votes)
4 views

Microcontroller Programing

Uploaded by

Wilson
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
4 views

Microcontroller Programing

Uploaded by

Wilson
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 27

ARUSHA TECHNICAL COLLEGE

MICROCONTROLLER
PROGRAMMING
Hardware/Software interface
Layers of the Machine
Kinds of Software
Computer Languages
Syntax, Semantics, Grammars
01 What happens to your program?
Compilation, Linking, Execution
INTRODUCTION TO Program errors

. COMPUTER Compilation vs. Interpretation etc.


PROGRAMMING
Software Categories

System SW
Programs written for computer systems
Compilers, operating systems, …

Application SW
Programs written for computer users
Word-processors, spreadsheets, & other application
packages
A Layered View of the Computer

Application Programs
Word-Processors, Spreadsheets,
Database Software, IDEs,
etc…
System Software
Compilers, Interpreters,Preprocessors, etc.
Operating System, Device Drivers

Machine with all its hardware


Operating System (OS)

∙ Provides several essential services:


• Loading & running application programs
• Allocating memory & processor time
• Providing input & output facilities
• Managing files of information
Programs

Programs are written in programming languages


PL = programming language
Pieces of the same program can be written in different PLs
• Languages closer to the machine can be more efficient
• As long as they agree on how to communicate
A PL is A special purpose and limited language
• A set of rules and symbols used to construct a computer
program. A language used to interact with the computer
Computer Languages

– Machine Language
• Uses binary code
• Machine-dependent
• Not portable

Assembly Language
• Uses mnemonics
• Machine-dependent
• Not usually portable
..
Computer Languages

High-Level Language (HLL)


• Uses English-like language
• Machine independent
• Portable (but must be compiled for different platforms)
• Examples: Pascal, C, C++, Java, Fortran, . . .
Machine Language

• The representation of a computer program read and understood


by the computer.
• A program in machine code consists of a sequence of machine
Operation Address
instructions. 0010 0000 0000 0100
Instructions: 0100 0000 0000 0101
0011 0000 0000 0110
• Machine instructions are in binary code
• Instructions specify operations and memory cells involved in
the operation
Assembly Language

• A symbolic representation of the machine language of a


specific processor.
• Is converted to machine code by an assembler.
• Usually, each line of assembly code produces one machine
instruction (One-to-one correspondence).
• Programming in assembly language is slow and error-prone
but is more efficient in terms of hardware performance.
• Mnemonic representation of the instructions and data
Example: Load Price ; Add Tax ; Store Cost
High-level language

• A programming language which use statements consisting of


English-like keywords such as "FOR", "PRINT" or “IF“, ... etc.
• Each statement corresponds to several machine language
instructions (one-to-many correspondence).
• Much easier to program than in assembly language.
• Data are referenced using descriptive names
• Operations can be described using familiar symbols
Example:
Cost := Price + Tax
Syntax & Semantics
Syntax:
• The structure of strings in some languages. A grammar describes a
language’s syntax
Examples:
Binary number
<binary_number> = <bit> | <bit> <binary_number>
<bit> =0|1
Identifier
<identifier> = <letter> {<letter> | <digit> }
<letter> =a|b|...|z
<digit =0|1|...|9
Semantics:
The meaning of the language
Syntax & Grammars

• Syntax descriptions for a PL are themselves written in a formal


language.
E.g. Backus-Naur Form (BNF)
• The formal language is not a PL but it can be implemented by
a compiler to enforce grammar restrictions.
• Some PLs look more like grammar descriptions than like
instructions.
Compilers & Programs

Compiler
• A program that converts another program from some
source language (or high-level programming language / HLL)
to machine language (object code).
• Some compilers output assembly language which is then
converted to machine language by a separate assembler.
• Is distinguished from an assembler by the fact that each
input statement, in general, correspond to more than one
machine instruction.
Compilation into Assembly L

Source Assembly
Program Compiler Language

Assembly Machine
Assembler
Language Language
Compilers & Programs
Source program
• The form in which a computer program, written in some
formal programming language, is written by the
programmer.
• Can be compiled automatically into object code or machine
code or executed by an interpreter.
• Pascal source programs have extension ‘.pas’
Compilers & Programs

Object program
• Output from the compiler
• Equivalent machine language translation of the source
program
• Files usually have the extension ‘.obj’
Executable program
• Output from linker/loader
• Machine language program linked with necessary libraries
& other files
• Files usually have the extension ‘.exe’
What is a Linker?

• A program that pulls other programs together so that they can


run.
• Most programs are very large and consist of several modules.
• Even small programs use existing code provided by the
programming environment called libraries.
• The linker pulls everything together and makes sure that
references to other parts of the program (code) are resolved.
Running Programs

• Steps that the computer goes through to run a program:


Memory
Machine language
program
(executable file)
Input Data Data entered CPU
during execution

Computed results
Program Output
Program Execution

• Steps taken by the CPU to run a program (instructions are in


machine language):
1. Fetch an instruction
2. Decode (interpret) the instruction
3. Retrieve data, if needed
4. Execute (perform) actual processing
5. Store the results, if needed
Program Errors

• Syntax Errors: Errors in the grammar of the language


• Runtime error: When there are no syntax errors, but the
program can’t complete execution
• Divide by zero
• Invalid input data
• Logical errors: The program completes execution, but delivers
incorrect results
• Incorrect usage of parentheses
Compilation
Source Target
Program Compiler Program

Input Target Program Output

• Compiler translates source into target (a machine language program)


• Compiler goes away at execution time
• Compiler is itself a machine language program, presumably created by
compiling some other high-level program
• Machine language, when written in a format understood by the OS is
object code
Interpretation

Source
Program

Interpreter Output

Input

•The interpreter stays around during the execution


•It reads and executes statements one at a time
Compilation vs. Interpretation

Compilation:
• Syntax errors caught before running the program
• Better performance
• Decisions made once, at compile time
Interpretation:
• Better diagnostics (error messages)
• More flexibility
Compilation vs. Interpretation

• Supports late binding (delaying decisions about program


implementation until runtime)
• Can better cope with PLs where the type and size of
variables depend on input
• Supports creation/modification of program code on the fly
(e.g. Lisp, Prolog)
Mixture of C & I
Source Intermediate
Program Translator Program

Intermediate
Program
VM Output

Input

•Many programming languages implement this


•Interpreter implements a Virtual Machine (VM).
JAVA
For portability:

Java Compiler

bytecode

ML Interpreter

• For flexibility: Just In Time (JIT) compiler translates


bytecode into ML just before execution

You might also like