Changes

Jump to: navigation, search

SPO600 64-bit Assembly Language Lab

119 bytes added, 01:00, 20 January 2017
Group Lab Tasks
=== Group Lab Tasks ===
1. Build and run the two three C versions of the program for x86_64. Take a look at the differences in the code.
2. Use the <code>objdump -d</code> command to dump (print) the object code (machine code) and disassemble it into assembler for each of the two binaries. Find the <code><nowiki><main></nowiki></code> section and take a look at the code. Notice the total amount of code.
3. Review, build, and run the x86_64 assembly language programs. Take a look at the code using <code>objdump -d '''objectfile'''</code> and compare it to the source code. Notice the absence of other code(compared to the C binary, which had a lot of extra code).
4. Build and run the three C versions of the program for aarch64. Verify that you can disassemble the object code in the ELF binary using <code>objdump -d '''objectfile'''</code> and take a look at the code.
5. Review, build, and run the aarch64 assembly language programs. Take a look at the code using <code>objdump -d'''objectfile'''</code> and compare it to the source code.
6. Here is a basic loop in x86_64 assembler - this loops from 0 to 9, using r15 as the index (loop control) counter:
.globl _start
start = 0 /* starting value for the loop index; '''note that this is a symbol (constant)''', not a variable */
max = 10 /* loop exits when the index hits this number (loop condition is i<max) */
loop:
/* '''... body of the loop ... do something useful here ... ''' */
inc %r15 /* increment index */
syscall
Extend this This code, combining doesn't actually do anything while looping. Combine it with code from the "Hello World" example, so that it prints each digit from 0 to 9 like this:
Loop: 0

Navigation menu