Build, deploy, and test your very own operating systems for the Internet of Things and other devices
Have you ever wanted to build your own operating system, but didn't know where to begin? Then this book is for you! In this book, the author explains everything you need to know from getting and installing the necessary tools to writing, compiling, deploying, and testing your very own operating system. more » By the time you are done you will have an operating system to call your own. And, don't worry about destroying your existing hardware and software environment as everything in this book is written with the intention of running in a virtualized environment. However, should you choose to do so, the author also explains how to deploy and test your new OS on bare-metal hardware as well.
The first few chapters give a brief overview of how modern day computers work. In these chapters you will (re)learn everything from memory allocation, stacks, and bootloaders to low-level machine code and programming languages. After that, you will jump into downloading and installing the tools you will use for building your very own operating system. Here you will learn how to develop a bootloader and kernel just like modern day computers rely on for operating. The last few chapters will explain how to deploy and test your operating system as well as how to expand your OS to do more and even how to cross-compile your shiny new operating system for other devices such as the Raspberry Pi.
To give an idea of what you can find in this book, below is the Table of Contents.
0x01 OS Basics
0x02 Intro to Machine Code
0x03 Intro to the Assembly Programming Language
0x04 Into to the C Programming Language
0x05 Getting Started
- Installing VirtualBox
- Installing Linux
- Installing GNOME
- Preparing CentOS and the VM
- Troubleshooting VirtualBox Guest Additions
- Preparing the Development Environment
0x06 Bootstrapping with the Bootloader
- Creating the Entry Point
- GNU GRUB
- Compiling the Entry Point
0x07 Welcome to the Kernel
0x08 Putting it all Together
0x09 Testing Your Operating System
0x0A Starting Your Architecture Library
- Expanding the Console
0x0B Expanding Your OS
0x0C Cross-Compiling for Other Architectures
- Create a Custom Cross-Compiler
- Porting for the Raspberry Pi
- Testing on Physical Hardware
Index « less
The purpose of this text is to provide a reference for University level assembly language and systems programming courses. Specifically, this text addresses the x86-64 instruction set for the popular x86-64 class of processors using the Ubuntu 64-bit Operating System (OS). While the provided code more » and various examples should work under any Linux-based 64-bit OS, they have only been tested under Ubuntu 14.04 LTS (64-bit).
The x86-64 is a Complex Instruction Set Computing (CISC) is a CPU design. This refers to the internal processor design philosophy. CISC processors typically include a wide variety of instructions (sometime overlapping), varying instructions sizes, and a wide range of addressing modes. The term was retroactively coined in contrast to Reduced Instruction Set Computer (RISC). « less
This book provides a hands-on approach to learning ARM assembly language with the use of a TI microcontroller. The book starts with an introduction to computer architecture and then discusses number systems and digital logic. The text covers ARM Assembly Language, ARM Cortex Architecture and its components, more » and Hardware Experiments using TILM3S1968. Written for those interested in learning embedded programming using an ARM Microcontroller. « less
Assembly Language for x86 Processors, 7e is intended for use in undergraduate courses in assembly language programming and introductory courses in computer systems and computer architecture. This title is also suitable for embedded systems programmers and engineers, communication specialists, game programmers, more » and graphics programmers. Proficiency in one other programming language, preferably Java, C, or C++, is recommended.
Written specifically for 32- and 64-bit Intel/Windows platform, this complete and fullyupdated study of assembly language teaches students to write and debug programs at the machine level. This text simplifies and demystifies concepts that students need to grasp before they can go on to more advanced computer architecture and operating systems courses. Students put theory into practice through writing software at the machine level, creating a memorable experience that gives them the confidence to work in any OS/machine-oriented environment. « less
32-bit, 64-bit, SSE, and AVX
Modern X86 Assembly Language Programming shows the fundamentals of x86 assembly language programming. It focuses on the aspects of the x86 instruction set that are most relevant to application software development. The book's structure and sample code are designed to help the reader quickly understand more » x86 assembly language programming and the computational capabilities of the x86 platform.
The primary audience for the book is Windows software developers since the sample code will be created using Visual C++ and Microsoft Macro Assembler. Developers targeting non- Windows platforms, however, also can learn from the book since most of the content will be organized and communicated independent of any specific operating system. In order to understand the book's subject material, a background that includes some programming experience using C or C++ will be helpful. Experience with or knowledge of a particular Windows API will not be a prerequisite to benefit from the book. « less
Written specifically for the Intel/Windows/DOS platform, this complete and fully updated study of assembly language teaches students to write and debug programs at the machine level. Based on the Intel processor family, the text simplifies and demystifies concepts that students need to grasp before they more » can go on to more advanced computer architecture and operating systems courses. Students put theory into practice through writing software at the machine level, creating a memorable experience that gives them the confidence to work in any OS/machine-oriented environment. Proficiency in one other programming language, preferably Java, C, or C++, is recommended. « less
Using Assembly and C
The AVR Microcontroller and Embedded Systems: Using Assembly and C features a step-by-step approach in covering both Assembly and C language programming of the AVR family of Microcontrollers. It offers a systematic approach in programming and interfacing of the AVR with LCD, keyboard, ADC, DAC, Sensors, more » Serial Ports, Timers, DC and Stepper Motors, Opto-isolators, and RTC.
Both Assembly and C languages are used in all the peripherals programming. In the first 6 chapters, Assembly language is used to cover the AVR architecture and starting with chapter 7, both Assembly and C languages are used to show the peripherals programming and interfacing. « less
Assembly is a low-level programming language that's one step above a computer's native machine language. Although assembly language is commonly used for writing device drivers, emulators, and video games, many programmers find its somewhat unfriendly syntax intimidating to learn and use.
Since 1996, more » Randall Hyde's The Art of Assembly Language has provided a comprehensive, plain-English, and patient introduction to 32-bit x86 assembly for non-assembly programmers. « less
Unlike high-level languages such as Java and C++, assembly language is much closer to the machine code that actually runs computers; it's used to create programs or modules that are very fast and efficient, as well as in hacking exploits and reverse engineering Covering assembly language in the Pentium more » microprocessor environment, this code-intensive guide shows programmers how to create stand-alone assembly language programs as well as how to incorporate assembly language libraries or routines into existing high-level applications Demonstrates how to manipulate data, incorporate advanced functions and libraries, and maximize application performance Examples use C as a high-level language, Linux as the development environment, and GNU tools for assembling, compiling, linking, and debugging « less
Programming from the Ground Up uses Linux assembly language to teach new programmers the most important concepts in programming. It takes you a step at a time through these concepts:
- How the processor views memory
- How the processor operates
- How programs interact with the operating system
- more » How computers represent data internally
- How to do low-level and high-level optimization
Most beginning-level programming books attempt to shield the reader from how their computer really works. Programming from the Ground Up starts by teaching how the computer works under the hood, so that the programmer will have a sufficient background to be successful in all areas of programming. This book is being used by Princeton University in their COS 217 "Introduction to Programming Systems" course. « less