使用 Loop Unrolling 技术优化代码。
![Loop
Unrolling](https://www.researchgate.net/profile/J-Ramanujam/publication/228588371/figure/fig3/AS:640641398755329@1529752220159/Characterization-
of-the-benefits-of-loop-unrolling_Q320.jpg)
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.