Assembly Programming and Computer Architecture for Software Engineers



Download 7.51 Kb.
Date07.08.2017
Size7.51 Kb.
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 64-bit.

  • 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


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.

Download 7.51 Kb.

Share with your friends:




The database is protected by copyright ©ininet.org 2020
send message

    Main page