Changes

Jump to: navigation, search

SPO600 64-bit Assembly Language Lab

203 bytes removed, 21:56, 5 October 2022
no edit summary
Throughout this lab, take advantage of ''[[make and Makefiles|make]]'' whenever possible.
 
{{Admon/tip|Using the <code>tar</code> command|To decompress and extract the files from the provided archive file, use the tar command: <code>tar xvf /public/spo600-assembler-lab-examples.tgz</code> from your home directory. You can also copy this archive to your own computers using the [[SSH#scp_-_Secure_Copy|scp]] command.}}
=== Resources ===
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 binaries. Find the <code><nowiki><main></nowiki></code> section and take a look at the code. Also notice the total amount of code.
3. Review, build, and run the x86_64 assembly language programs using <code>make</code>, taking note of the commands that are executed to assemble and link the code. 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 assembly language version of the program for aarch64 using <code>make</code>, taking note of the commands that are executed to assemble and link the code. 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.
{{Admon/tip|Character conversion|In order to print the loop index value, you will need to convert from an integer to digit character. In ASCII/ISO-8859-1/Unicode UTF-8, the digit characters are in the range 48-57 (0x30-0x39). You will also need to assemble the message to be printed for each line - you can do this by writing the digit into the message buffer before outputting it to stdout, which is probably the best approach, or you can perform a sequence of writes for the thee parts of the message ('Loop: ', number, '\n'). You may want to refer to the manpage for <code>ascii</code>.}}
 
{{Admon/tip|6502 Implementation|For reference, here is a [[6502 Counting Loop Example|6502 implementation of this loop]].}}
3. Repeat the previous step for x86_64.

Navigation menu