Computer Architecture And Assembly Language, CMAC 3100, Section 1
Welcome to CMAC 3100. In this class we will study computer organization and architecture with a focus on assembly language programming. As we learn how to program in assembly language we will learn the fundamentals of how computers operate. We will discuss data representation and storage at the lowest level.
As part of this investigation we will study the Intel X86-64 assembly language. You will be writing programs in this language throughout the semester.
WARNING: This class is intended for students in the Applied Computing degree. This class will NOT satisfy the requirement for CMSC 3100 Computer Architecture. CMSC 3100 is much more focused on the implementation of a computer. If you are in the computer science degree program, this class (CMAC 3100) will not count for your degree requirements.
This course will be a combination of mathematics, computer engineering and
computer science. Students are encouraged to:
- Attend class regularly.
- Read the book.
- Ask questions.
- Experiment.
I will be using the university programming server for this class. This is a linux based machine and we will be using a number of tools provided by linux. I expect that you have used a linux based machine in your previous classes. I will probably use one every day in class. If you have any problems or questions, please ask.
Currently I plan on using:
- NASM The Netwide Assembler. This is an open source assembler and it appears it runs in a number of different environments.
- gdb the GNU Debugger
- A number of linux utilities
- The loader,
ld
- Makefiles
- Octal dump
od
We will discuss each of these tools as we encounter and use them. I will try to provide documentation on use as well as pointers to more information. Again, if you have problems, please ask for help.
I expect that you know how do do several things/have used several tools
- A text editor (vi, emacs, pico, visual studio code, ...)
- A file transfer tool (psftp, winscp, filezilla, visual studio code, ...)
- A terminal emulator (putty, ssh and windows command line, visual studio code, ...)
- The linx command line (bash, sh, ...)
I will use these tools almost every class as well, so if you are confused or need help, please ask. My toolset might not match yours, but that is ok, the important item here is to be able to accomplish the task given.
It is my hope that you will gain proficiency and understanding of programming and the entire programming process in this class. Please ask questions.
This class meets MWF 2:00 to 2:50 in Ross Hall room 136. This course is worth three credits.
Announcements:
- Friday October 4 is part of Mid-Semester Break, class for this day will be held on Tuesday November 26.
- I am the instructor of record for this class. Only the instructor of record can properly grade coursework and issue midterm and final grades.
- Should it be needed, the zoom meeting id for this class is 961 8367 6124
- You must arrange well ahead of class for this meeting to be active.
- You must have a documented medical condition for this meeting to be active.