The Assembly Fundamentals course is an aggressive, five day class targeted toward
students with minimal exposure to x86 and ARM. Starting with x86, students will
discuss the concept of binary storage. The course then goes on to cover 16- and
32-bit Windows-based assembly. Students will write procedures and learn about the
use of various function calling conventions, including c_decl, stdcall, and fastcall.
The history of memory will also be discussed as students become familiar with segmented
memory, flat memory, and the current flat memory model. Students will work hands-on
with the stack while performing stack traces in static code. Students will also
write code that directly manipulates memory. Debuggers will be introduced and used
to show the behavior of memory during code execution.
On day four the focus will change from x86 to ARM. The instructor will provide a
brief comparison of RISC and CISC processors and the benefits of each. The class
then moves to compilation and execution of code using the gcc editor and the GNU
Assembler (GAS). Using ARM hardware, students will learn to create and call user-defined
functions as well as system calls through offsets into the syscall table. Networking
and socket communication will also be covered and students will create executable
programs that communicate over an IPenabled network.
During this course students will create a functional, multiplexed chat client and
server. Students will also write a stenography application that embeds a message
into the low-order bits of a bitmap file.
Windows is a registered trademark of Microsoft Corporation in the United
States and other countries.
Prerequisites
- General Computer knowledge
- Some programming experience is helpful, but not required
Topics
- x86 Assembly Background
- 16-bit vs 32-bit vs 64-bit
- x86 Arithmetic Commands
- x86 Program Structure
- VM Setup and Use
- Control Flow Instructions
- x86 Memory
- Procedures
- Prolog/Epilog
- Strings in x86
- Debugging With CodeView
- REP Commands
- File I/O
- Linking to the Windows API
- Registers
- Arithmetic Commands
- Assemblers
- Simple Memory Access
- Calling Functions from C run-time Library
- Using the syscall table
- ARM I/O
- ARM Memory
- Conditional Execution (Branching)
- ARM Pipelining
- Conditional Instructions
- ARM user-defined Procedures
- Network Overview
- Writing a Server
- Memory Structures (Structs)
- More on File Descriptors
- Blocking Calls
- Using Poll()
- Writing a Client
- Multiplexing a Server
Course Pricing
| Length |
Commercial |
Government |
| 5 Days |
$4,800.00 |
$4,000.00 |