Download Assembly Programming and Computer Architecture for Software

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project

Document related concepts

Computer cluster wikipedia , lookup

Object-oriented programming wikipedia , lookup

Abstraction (computer science) wikipedia , lookup

Reactive programming wikipedia , lookup

Supercomputer wikipedia , lookup

Supercomputer architecture wikipedia , lookup

Structured programming wikipedia , lookup

Parallel computing wikipedia , lookup

Assembly language wikipedia , lookup

Transcript
Assembly Programming and Computer Architecture for Software Engineers
Brian R. Hall & Kevin J. Slonka
Expected publication date: Spring 2017
Synopsis
We are writing a textbook that presents the topics of Assembly Programming and Computer
Architecture to students with a focus on software engineering. Software engineers who
understand the fundamentals of computer architecture and assembly programming better
understand how programs utilize hardware and are better prepared to efficiently write and debug
code for a variety of systems and tasks. The goal of our textbook is to provide students and
educators with a text that is useful in terms of fundamentals, syntax, examples, and guidance.
Our Approach
Our book is focused on addressing the weaknesses that exist in the current book market for
assembly and computer architecture education.
- Low-cost (less than $50)
- Appropriate audience – software engineering students and educators, which includes
students in four and two-year degree programs in software engineering, computer
science, information systems, etc.
- Applied and practical
- Platform diverse (Windows, Linux, Mac) and thus assembler diverse (MASM, NASM,
GAS) – Flexible assembly programming education.
- Discuss intricate differences between assemblers (MASM, NASM, GAS), differences
between syntaxes (Intel, AT&T), and differences between OS platforms (Windows,
Linux, Mac) when assembling, compiling, linking, and debugging.
- Use standard libraries for code examples and offer sufficient instruction on working with
high-level languages (C++ libraries, inline assembly, function calls both ways).
- Provide sufficient code examples in a variety of assemblers/syntaxes for 32-bit and 64bit.
- Provide appendices, videos, and tutorials as needed.
- Focus on x86/x86-64 architecture. Possible discussion/examples of other architectures.
- Assumed pre-requisite knowledge: a fundamental programming sequence up to and
including data structures.
Table of Contents (Subject to change)
Each chapter will follow a flexible multi-platform, assembler, syntax approach. The bullets
under each chapter are not necessarily comprehensive, but provide examples of subtopics.
1. Language and Data Fundamentals
 Computing Languages
 Data Representation
 Boolean Expressions
2. Processor and System Architecture
 Architecture overview
 Processors
 Input and Output
3. Assembly and Syntax Fundamentals
 Basic elements
 Data definition
 Introduce assemblers (GAS, MASM, NASM)
 Introduce syntaxes (Intel, AT&T)
4. Basic Instructions
 Addressing, data transfer, arithmetic
5. Moderate Instructions
 Boolean, conditions, shifting, arithmetic
6. Procedures
 Stack primer
 How procedures are defined and implemented
 Calling conventions (e.g., cdecl, stdcall, x64)
7. Strings and Structs
8. Floating Point Operations
 FPU overview
 FPU instructions
9. Inline Assembly
10. General topics
 Interrupts
 Processes
 and More (e.g., Quantum Computing)
11. Other Architectures
12. Electrical Hardware Overview
 Basic electrical component overview
 Digital logic
 Microcontroller design and interoperability
Author Bios
Brian R. Hall, Sc.D. is an Assistant Professor in the Department of Software Technology at
Champlain College in Burlington, VT. His primary interests are computing education, computing
ethics, and text mining. Dr. Hall teaches a variety of courses including Computer Architecture,
Introduction to Programming, Advanced Programming, and Global IT & Ethics.
Kevin Slonka, Sc.D. is the head of the Computer Science program at Pennsylvania Highlands
Community College in Johnstown, PA. He teaches a variety of courses including programming,
operating systems, networking, and databases. Dr. Slonka is also a Senior Systems Engineer at
Precision Business Solutions in Ebensburg, PA.