This is an introductory course for computer architecture and assembly language. Its main objective is to help developers debug systems using assembler. Help C/C++ developers have a better understanding of the “what’s happening under the hood”. Help security experts to reconstruct the compiled code and find security vulnerabilities, and give SW developers some knowledge on computer architecture and design considerations. Especially helpful for driver developers.

Experienced C/C++ programmers, people are writing kernel drivers, security experts who want an introductory course to computer architecture and the assembly language.

C and C++ languages.

}

32 Hours

Cyber Security

h

Certificate: No

Price: contact us for more details

Don't Be Shy

Leave your details and one of our customer service representatives will respond to you as soon as possible

Course Outline

 

Objectives

By the end of this course participants shall

– Understand basic computer architecture.
– Get acquainted with coding ASM programs.
– Get acquainted with low-level concepts (stack implementation, calling
convention, interrupts).
– Understand compiling from C to assembler
– Understand C++ real rime requirements.

Contents

Day 1:
– Introduction to micro architecture (Von Neumann machine):
– ISA (short introduction)
– ALU, LOAD, Branch data paths.
– Memory hierarchy
– Virtual memory
– Introduction to registers and caching
– Interrupt and exceptions handling.
– Computer Components :
o SRSM
o DRSM o MMU o DMA o IPC
o GPU
o Pipe line programming


Day 2+3:

Basic programming Skills:
Writing in assembly:
o The assembly program sections
o Basic instruction sets ALU (MOV, add), memory (load, store),
branch.
o Working with file descriptors.
o Working with system calls.
o Working with registers (control and dedicated) o Addressing modes.

Day 4:

– Assembly extended:
Data types initialization Arithmetic instructions
Conditional Instructions loop & recursion
file manipulation
Memory management
Connection to the real world:
– Compile C to assembler
– Function prologue and epilogue.
– The main function and what happens before main
– Local, static and heap variables
– Object layout and constructor /destructor calls
– Inheritance
– Temporary objects