Do My Homework / Homework Help Answers / Computer architecture Homework Help / Intel 32 bit Assembly Language Assignment

Intel 32 bit Assembly Language Assignment

Need help with this question or any other Computer architecture assignment help task?

I need you to do this assignment for me. Make sure the assembly code is using grcc 32-bit (intel), please comment on the assembly code as in the instructions, and please do the first bounus portion. The instructions are in the word document (please put your answers in there) and the code is provided at the bottom of the word file.
Additional Instructions:
Programming Assignment 2: The purpose of this project is to gain a greater understanding of the Intel 32-bit instruction set and understand how a compiler translates C code into assembly language. By compiling the program in unoptimized mode you will hopefully see a fairly clear translation. When running in optimization mode, you will see how well compilers can optimize your code. To compile an unoptimized version use: gcc -Wa,-adhln -g -masm=intel -m32 "Project 2.c" > "Project 2-g.asm" This will write the unoptimized inter-mixed source and assembly code Project 2-g.asm. To compile an optimized version use: gcc -Wa,-adhln -O -masm=intel -m32 "Project 2.c" > "Project 2-o.asm" This will write the optimized inter-mixed source and assembly code Project 2-o.asm. The -Wa,-adhln option causes gcc to generate intermixed source and assembly code. The -masm=intel option causes gcc to generate assembly code in intel format. The -m32 generates 32-bit code. The -g option generates unoptimized code while -O generates optimized code. The generated code includes quite a few directives that can be ignored. Most of the directives begin with a period (.). There are also a few call instructions to procedures that you may not know what they mean that can be ignored. For example: call __x86.get_pc_thunk.bx add ebx, OFFSET FLAT:_GLOBAL_OFFSET_TABLE_ The following questions should be answered using the unoptimized code. 1. Describe the stack at line 24 (return (sum);). The bottom of the stack is the first row below. The top of the stack will be the last item. The first few items are provided. You will probably need to add some additional rows to the table below. Description Value First argument to main argv Second argument to main argc Return address of main Caller’s return address C runtime value of bp Caller’s bp register Local variable i in main [bp-12] 1 2. In detail explain the code generated for line 82 (k = function1(i, j);). For this and all further questions in which you are asked to explain the code generated in detail, I expect you to copy the generated code and add a comment for each line. For example: 006e C745FC00 mov DWORD PTR -4[ebp], 0 ; initialize i You can also refer to Week9-CAssembly-g.asm for examples of what you should submit. 3. In detail explain the code generated for function2 (line 28 through 39). The following questions should be answered using the optimized code. 4. In detail explain the code generated for function1. 5. How are function calls optimized? The following questions should be answered using by comparing the unoptimized code and the optimized code. 6. Compare the code generated by function4 in the unoptimized and optimized versions. Explain the optimizations. Bonus – 10 points In detail explain the code generated for function3. This a hard. Try your best. Why is the compiler doing this? You need to explain the purpose of each line of the generated assembly code. Bonus – 10 points The file strlen.asm contains the Microsoft Visual Studio source code for the strlen() function. You need to explain the purpose of each line of the assembly code. Grading Criteria By Project Items: 1. Stack contents not defined well enough (-5 -> -10 points). 2. Call functon1 description (-5 -> -10 points). 3. Code description for function2 not complete enough (-5 -> -10 points). 4. Optimized function1 description incomplete (-5 -> -10 points). 5. Optimized function call description incomplete (-5 -> -10 points). 6. Function4 optimized description incomplete (-5 -> -10 points). Code: /* Project 2 */ /* GCC */ /* gcc -Wa,-adhln -g -masm=intel -m32 "Project 2.c" > "Project 2-g.asm" */ /* gcc -Wa,-adhln -O -masm=intel -m32 "Project 2.c" > "Project 2-o.asm" */ #include #define NOINLINE __attribute__ ((noinline)) static NOINLINE int function1(int x, int y) { int i; int sum; int values[10]; sum = 0; for (i = 0; i < 10; i++) { values[i] = 10 * i + x * y; sum += values[i]; } return (sum); } static int NOINLINE function2(int *values, int valuesLen) { int i; int sum; sum = 0; for (i = 0; i < valuesLen; i++) { sum += values[i]; } return (sum); } static NOINLINE int function3(int x) { int y; y = x / 10; return (y); } static NOINLINE int function4(int a, int b, int c, int d) { int r; if (a > b) r = a; else if (a > c) r = 2 * a; else if (a > d) r = 3 * a; else r = -1; return (r); } int main(int argc, char **argv) { int i; int j; int k; int values[10]; i = 1; j = 2; k = function1(i, j); printf("function1: i = %d, j = %d, k = %d\n", i, j, k); for (i = 0; i < 10; i++) { values[i] = i; } k = function2(values, 10); printf("function2: k = %d\n", k); k = function3(100); printf("function3: k = %d\n", k); k = function4(1, 2, 3, 4); printf("function4: k = %d\n", k); return (0); }
There are no answers to this question.
Login to buy an answer or post yours. You can also vote on other others

Get Help With a similar task to - Intel 32 bit Assembly Language Assignment

Related Questions

Similar orders to Intel 32 bit Assembly Language Assignment
155
Views
2
Answers
142
Views
2
Answers
Popular Services
Tutlance Experts offer help in a wide range of topics. Here are some of our top services: