Changes

Jump to: navigation, search

SPO600 64-bit Assembly Language Lab

1,563 bytes added, 13:06, 16 September 2014
no edit summary
[[Category:SPO600 Labs]][[Category:Assembly Language]]
{{Admon/caution|Not Updated|This page contains outdated information. It will be updated with new information for Fall 2014.}}
{{Admon/lab|Purpose of this Lab|In this lab, you will experiment with assembler on the x86_64 and aarch64 platforms.}}
{{Admon/tip|IrelandAustralia and Red|Perform this lab on ireland<code>australia.proximity.on.ca</code> (for x86_64) and red (for aarch64, accessed via port 2222 on <code>iraq.proximity.on.ca</code>.}}
== Lab 3 ==
 
<!--
 
### THIS COMMENTED-OUT SECTION DESCRIBES THE
### CONFIGURATION USED FOR THE WINTER 2014
### OFFERING OF THE SPO600 COURSE, WHERE THE
### AARCH64 WORK WAS DONE IN EMULATION ALONGSIDE
### THE X86_64 WORK ON THE INTEL HOST "IRELAND".
### IN FALL 2014, AARCH64 HARDWARE WAS AVAILABLE,
### AND IRELAND HAD FAILED, SO WE SWITCHED TO
### THOSE HOSTS.
=== Ireland - Configuration ===
Throughout this lab, take advantage of ''[[make and Makefiles|make]]'' whenever possible.
 
-->
 
=== Initial Code ===
 
The code examples for this lab are available at this link: http://england/spo600/spo600-lab3-examples.tgz
 
Please download this archive to your accounts on Australia and Red, and unpack the archive on both systems. Do all of the work for the x86_64 architecture on Australia, and all of the work on the aarch64 architecture on Red.
 
Unpacking the archive in your home directory will produce the following directory structure:
 
spo600
`-- examples
`-- hello # "hello world" example programs
|-- assembler
| |-- aarch64 # aarch64 gas assembly language version
| | |-- hello.s
| | `-- Makefile
| `-- x86_64 # x86_64 assembly language versions
| |-- hello-gas.s # ... gas syntax
| |-- hello-nasm.s # ... nasm syntax
| `-- Makefile
`-- c # Portable C versions
|-- hello2.c # syscall wrapper version
|-- hello.c # printf version
`-- Makefile
 
Throughout this lab, take advantage of ''[[make and Makefiles|make]]'' whenever possible.
 
=== References ===
* [[Assembler Basics]]
** [[x86_64 Register and Instruction Quick Start]]
** [[aarch64 Register and Instruction Quick Start]]
=== Group Lab Tasks ===
loop:
/* ... body of the loop ... do something useful here ... */
inc %r15 /* increment index */
3. Blog about the programs you've written. Describe the experience of writing and debugging in assembler, as compared to writing in other languages. Contrast x86_64 and aarch64 assembler, your experience with each, and your opinions of each. Include links to the source code for both of your assembler programs.
 
=== References ===
* [[Assembler Basics]]
** [[x86_64 Register and Instruction Quick Start]]
** [[aarch64 Register and Instruction Quick Start]]

Navigation menu