Difference between revisions of "Fall 2014 SPO600 Assembly Language Presentation"

From CDOT Wiki
Jump to: navigation, search
(Assignment)
(No difference)

Revision as of 01:48, 5 September 2014

Important.png
This is a draft only!
It is still under construction and content may change. Do not rely on this information.

Assignment

  1. Select one of the topics below by placing your name in the "Student" column (first come, first served).
  2. During week 3, research the topic and prepare a 3- to 5-minute presentation to teach the answer to the class.
  3. Be prepared to teach this presentation during week 4. You may want to draw whiteboard diagrams, use presentation slides, or have a 1-page handout.

Topics

Topic Question/Topic Description Student
x86 Registers What are the names and sizes of all of the x86_64 registers?
Aarch64 Registers What are the names and sizes of all of the Aarch64 registers?
NASM Syntax What is NASM, and what are the basic rules of NASM syntax?
GNU x86_64 gas Syntax What are the basic rules of GNU Assembler (gas) syntax for x86_64 platforms?
GNU aarch64 Syntax What are the basic rules of GNU Assembler (gas) syntax for aarch64 platforms?
Argument storage on x86_64 When a function/procedure is called on an x86_64 Linux system, where are the arguments stored?
Argument storage on aarch64 When a function/procedure is called on an aarch64 system, where are the arguments stored?
System call numbers on x86_64 What are the system call numbers on an x86_64 Linux system?
System call numbers on aarch64 What are the system call numbers on an aarch64 Linux system?
PLT In an ELF file, what is a PLT and how is it used?
Static and dynamic linking What are the differences between static and dynamic linking? Advantages of each?
Copy-on-write What is copy-on-write (when referring to memory in a Linux system)? When is it used?
Assembling using gas How do you use the GNU assembler (gas) to compile an assembly-language program ("assemble" it)?
Single-stepping with gdb How do you execute a program one instruction at a time (single-stepping) using the GNU debugger (gdb)?
Dividing on x86_64 and aarch64 How do the division instructions work on x86_64 and aarch64? How are they different?
The Mysterious XOR x86 and x86_64 code often contains instructions that XOR a register with itself (e.g., xor %eax,%eax). What does this do and why is it used?