Intel x86 Programming

Intel x86 Architecture & Programming

Course Overview:

  • IA-32 is a X86 bit instruction set architecture. We will talk on instructions in the x86 that can be executed by Applications that implement Intel; therefore those Applications can natively run programs that run on x86 processors from Intel.
  • This course covers the fundamental X86 architecture programming and concepts.

Duration: 24 hrs

You Will Learn:

  • What the expected behavior of instructions are based on the current operating mode and enabled features in X86

Course Material:

  • Hand book and sample examples
  • Prerequisites:
  • Fresh engineers/graduates in computer science or equivalent having knowledge of computer architecture

Course Outline:

Brief History Of INTEL® 64 AND IA-32 Architecture

  • 16-bit Processors and Segmentation 1978 to
  • The Fourth Generation Intel® CoreTM Processor Family (2013)
  • Basic Execution Environment
  • Address spaces
  • Basic program execution registers
  • Memory Organizations
  • Addressing and ISA

Programing in X86

  • Setting up assembler
  • Basic Register set programming

Life cycle of an assembly program

  • Analyzing the binary/exe

Declare and access

  • Scalar variables Integers, real, data types, pointers, arrays, and structures
  • Using Directives
  • Writing simple programs
  • ALU and basic instructions
  • Building sample applications
  • Introduction to Decisions.
  • IF..THEN..ELSE Sequences.
  • CASE Statements.
  • State machines and indirect jump
  • Spaghetti code
  • Loops
  • WHILE Loops
  • REPEAT..UNTIL loops
  • LOOP END LOOP
  • FOR Loops
  • Register usage and loops
  • Performance improvements

MACROS

  • Handling Code and Data declaration
  • Coding Arithmetic operation

FUNCTIONS

  • SCOPE & CALL
  • PARAM
  • MAIN/.START
  • PRIVATE & GLOBAL
  • Procedures (Near and far)
  • Functions
  • Saving the state of the machine
  • Parameters
  • Pass by value parameters.
  • Pass by reference parameters.
  • Pass by value-returned parameters.
  • Pass by result parameters.
  • Pass by name parameters.
  • Passing parameters in registers.
  • Passing parameters in global variables.
  • Passing parameters on the stack.
  • Passing parameters in the code stream.
  • Passing parameters via a parameter block.
  • Function results.
  • Returning function results in a register.
  • Returning function results on the stack.
  • Returning function results in memory locations.
  • Side effects.
  • Local variable storage

Mixing C & Assembly

  • Calling X86 function in C/C++
  • Calling C function in Assembly
  • Calling C++ function in Assembly

INTERRUPT

  • STD BIOS CALLS
  • EXTENDING DOS CALLS

Interfacing with Linux

  • Calling Conventions (from the x86 )
  • Interfacing with the C standard library and own static libraries with CECL
  • Inline Assembler
  • A case study on Embedded Application with no OS using X86 assembly and C
  • Analyzing Boot loader in Assembly
  • Building boot loader
  • Loading applications and test

FAQ