Assembly代写:COMP2131 Working With Assembly Loops

使用Loop Unrolling技术优化代码。

Loop Unrolling

Step 1

Write a program in GNU assembly language that uses macros to print the following messages on the screen:

Hello, programmers!
Welcome to the world of,
Linux assembly programming!

Step 2

Using the C Programming language, write four version of a function that contain a loop. Each function should accept two numbers and calculate the sum of all numbers between the first number and last number (inclusive of the first and last number). Tip: Try to use the same number of variables and almost the same logic when writing the C code for all four functions. Once each function is written and tested for correct output, generate an assembly language version of the function using the command:

$gcc -O1 -S filename.c

where filename.c is the C program containing the function. Next, analyze and compare the assembly language version of each function.

  • a. Write a version of the function using a for loop
  • b. Write a version of the function using a while loop
  • c. Write a version of the function using a do..while loop
  • d. Write a version of the function using a goto loop
  • e. Is the assembly language version of each loop function the same or different? If different, identify the differences. Your comparison should be based on:
    • Number of registers used
    • Number of jumps (iterations)
    • Total number of operations

Step 3

Using the C Programming language, write a program that sums an array of 50 elements. Next, optimize the code using loop unrolling. Loop unrolling is a program transformation that reduces the number of iterations for a loop by increasing the number of elements computed on each iteration. Generate a graph of performance improvement. Tip: Figure 5.17 in the textbook provides an example of a graph depicting performance improvements associated with loop unrolling.

Submission:

Make a Word document that contains all the programs that you wrote for Step 1, Step 2 and Step 3.

  • For Step 1, include only the assembly code.
  • For Step 2, include the C code for the 4 functions and the assembly code that you generated for each function. Be sure to include your analysis of the assembly code generated from each function.
  • For Step 3, include the C code and the assembly code that you generated for each step of the loop unrolling process.

Submit the word document to the Open Learning Faculty Member for grading.