Intel x86 Programming
Intel x86 Architecture & Programming
- 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
- Hand book and sample examples
- Fresh engineers/graduates in computer science or equivalent having knowledge of computer architecture
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
- WHILE Loops
- REPEAT..UNTIL loops
- LOOP END LOOP
- FOR Loops
- Register usage and loops
- Performance improvements
- Handling Code and Data declaration
- Coding Arithmetic operation
- SCOPE & CALL
- PRIVATE & GLOBAL
- Procedures (Near and far)
- Saving the state of the machine
- 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
- 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