Program in assembly starting with simple and basic programs, all the way up to AVX programming. By the end of this book, you will be able to write and read assembly code, mix assembly with higher level languages, know what AVX is, and a lot more than that.
The code used in Beginning x64 Assembly Programming is kept as simple as possible, which means: no graphical user interfaces or whistles and bells or error checking. Adding all these nice features would distract your attention from the purpose: learning assembly language. The theory is limited to a strict minimum: a little bit on binary numbers, a short presentation of logical operators, and some limited linear algebra. And we stay far away from doing floating point conversions.
The assembly code is presented in complete programs, so that you can test them on your computer, play with them, change them, break them. This book will also show you what tools can be used, how to use them, and the potential problems in those tools. It is not the intention to give you a comprehensive course on all of the assembly instructions, which is impossible in one book: look at the size of the Intel Manuals. Instead, the author will give you a taste of the main items, so that you will have an idea about what is going on. If you work through this book, you will acquire the knowledge to investigate certain domains more in detail on your own.
The majority of the book is dedicated to assembly on Linux, because it is the easiest platform to learn assembly language. At the end the author provides a number of chapters to get you on your way with assembly on Windows. You will see that once you have Linux assembly under your belt, it is much easier to take on Windows assembly.
This book should not be the first book you read on programming, if you have never programmed before, put this book aside for a while and learn some basics of programming with a higher-level language such as C.
What You Will Learn
Discover how a CPU and memory works
Appreciate how a computer and operating system work together
See how high-level language compilers generate machine language, and use that knowledge to write more efficient code
Be better equipped to analyze bugs in your programs
Get your program working, which is the fun part
Investigate malware and take the necessary actions and precautions
Who This Book Is For
Programmers in high level languages. It is also for systems engineers and security engineers working for malware investigators. Required knowledge: Linux, Windows, virtualization, and higher level programming languages (preferably C or C++).
Author(s): Jo Van Hoey
Publisher: apress
Year: 2019
Language: English
Pages: 458
Tags: assembly x64, programming
Front Matter......Page 2
1. Your First Program......Page 18
2. Binary Numbers, Hexadecimal Numbers, and Registers......Page 30
3. Program Analysis with a Debugger: GDB......Page 37
4. Your Next Program: Alive and Kicking!......Page 52
5. Assembly Is Based on Logic......Page 64
6. Data Display Debugger......Page 68
7. Jumping and Looping......Page 74
8. Memory......Page 85
9. Integer Arithmetic......Page 96
10. The Stack......Page 105
11. Floating-Point Arithmetic......Page 113
12. Functions......Page 119
13. Stack Alignment and Stack Frame......Page 125
14. External Functions......Page 130
15. Calling Conventions......Page 138
16. Bit Operations......Page 150
17. Bit Manipulations......Page 165
18. Macros......Page 171
19. Console I/O......Page 176
20. File I/O......Page 185
21. Command Line......Page 202
22. From C to Assembler......Page 206
23. Inline Assembly......Page 216
24. Strings......Page 224
25. Got Some ID?......Page 238
26. SIMD......Page 245
27. Watch Your MXCSR......Page 250
28. SSE Alignment......Page 262
29. SSE Packed Integers......Page 272
30. SSE String Manipulation......Page 277
31. Search for a Character......Page 284
32. Compare Strings......Page 293
33. Do the Shuffle!......Page 304
34. SSE String Masks......Page 318
35. AVX......Page 340
36. AVX Matrix Operations......Page 350
37. Matrix Transpose......Page 374
38. Performance Optimization......Page 389
39. Hello, Windows World......Page 408
40. Using the Windows API......Page 414
41. Functions in Windows......Page 421
42. Variadic Functions......Page 433
43. Windows Files......Page 438
Back Matter......Page 444