This shows you the differences between two versions of the page.
Next revision | Previous revision | ||
en:multiasm:introduction [2024/07/09 14:57] – created pczekalski | en:multiasm:introduction [2024/07/09 15:21] (current) – pczekalski | ||
---|---|---|---|
Line 1: | Line 1: | ||
====== Introduction ====== | ====== Introduction ====== | ||
- | The old, somehow abandoned Assembler programming comes to light again: " | + | The old, somehow abandoned Assembler programming comes to light again: " |
- | Besides developing new products and the related need for compilers and tools, the assembler language is essential to generating compact, rapid implementations of algorithms: it gives software developers a powerful tool of absolute control over the hardware, | + | Besides developing new products and the related need for compilers and tools, the assembler language is essential to generating compact, rapid implementations of algorithms: it gives software developers a powerful tool of absolute control over the hardware, |
- | <todo @pczekalski> add </todo> | + | Assembler programming applies to the selected and specific groups of tasks and algorithms.\\ |
+ | Using pure assembler to implement, e.g., a user interface, is possible but does not make sense.\\ | ||
+ | Nowadays, assembler programming is commonly integrated with high-level languages, and it is a part of the application' | ||
+ | |||
+ | It is a rule of thumb that the simpler and more constrained the device is, the closer the developer is to the hardware. An excellent example of this rule is development for an ESP32 chip: it has 2 cores that can easily handle Python apps, but when it comes to its energy-saving modes when only ultra-low power coprocessor is running, the only programming language available is assembler, it is compact enough to run in very constrained environments, | ||
+ | |||
+ | This book is divided into four main chapters: | ||
+ | * The first chapter introduces students to computer platforms and their architectures. Assembler programming is very close to the hardware, and understanding those concepts is necessary to write code successfully and effectively. | ||
+ | * The second chapter discusses programming in assemblers for constrained devices that usually do not have operating systems but are bare-metal programmed. As it is impossible to review all assemblers and platforms, the one discussed in detail in this chapter is the most popular: AVR (ATMEL) microcontrollers (e.g. Arduino Uno development board). | ||
+ | * The third chapter discusses assembler programming for the future of most devices: ARM architecture. This architecture is perhaps the most popular worldwide as it applies to mobile phones, edge and fog-class devices, and recently to the growing number of implementations in notebooks, desktops, and even workstations (e.g., Apple' | ||
+ | * The last, fourth chapter describes in-depth assembler programming for PCs in its 64-bit version for Intel and AMD CPUs, including their CISC capabilities, | ||
+ | |||
+ | <WRAP excludefrompdf> | ||
+ | The following chapters present the contents of the coursebook: | ||
+ | * [[en: | ||
+ | * [[en: | ||
+ | * [[en: | ||
+ | * [[en: | ||
+ | </WRAP> | ||