Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

please solve 15, 16, 17 A third degree polynomial equation a cubic equation) is

ID: 3793566 • Letter: P

Question

please solve 15, 16, 17

A third degree polynomial equation a cubic equation) is of the form p(x) = c_3x^3 + c_x^2 + c_1x^1 c__0 where x and the four coefficients are integers for this exercise. Suppose the values of the coefficients c_0, c_1, c_2, and c_3 have been loaded into registers St0, $t1, $t2, and $13, respectively. Suppose the value of r is in St7. Write the MIPS32 instructions that would evaluate this polynomial, placing the result in St9. Let $t0 = 0xFEDC 4321, St1 = 0x9876_ABCD, and St2 = AAAA_AAAA. Suppose the following sequence of instructions (on the next page is performed exactly four times, i.ee we execute instructions 1-4, we repeat executing instructions 1-4, we repeat executing instructions 1-1, we repeat executing instructions 1-A, and then we stop. Show the contents of $t0, $t1, $12, and St3, after we stop. Write your answers in hex. Kevin R. Burger Computer Science & Engineering Arizona State University CSE/EEE 2 Computer Organization a d Assembly Language [01] s11 St0, st0, 1 [02] sr1 St1, St1 1 [03] xor St3, St0, $t [04] nor St3, St2, $t3 [051 go back to line 1 We can allocate string literals and global variables in the .data section of an assembly language program. Write MARS directives which would allocate the following C-like variables in the .data section. char ch1 = ' '. ch2 = '$';//Assume char variables/values are 1-byte int X = 0, y = -1, z;//Assume int variables/values are 4-bytes char * name = Marge Simpson//name is a label assoc with the address of the first char int i array [250] = {0}//I array is an array of 250 ints, all initialized to 0 array char c array [250] = {0}//carry is an array of 250 chars, all initialized to 0

Explanation / Answer

Answer:

Assembly Language Code :

15)

push rbp
mov rbp, rsp
sub rsp, 16
movss DWORD PTR [rbp-4], xmm0
mov eax, DWORD PTR [rbp-4]
mov DWORD PTR [rbp-8], eax
movss xmm0, DWORD PTR [rbp-8]
call sqrtf
leave
ret
.LC0:
.string "Enter coefficients a, b and c: "
.LC4:
.string "Roots are real and different."
.LC5:
.string "x1 = "
.LC6:
.string "x2 = "
.LC7:
.string "Roots are real and same."
.LC8:
.string "x1 = x2 ="
.LC9:
.string "Roots are complex and different."
.LC10:
.string "+"
.LC11:
.string "i"
.LC12:
.string "-"
main:
push rbp
mov rbp, rsp
sub rsp, 48
mov esi, OFFSET FLAT:.LC0
mov edi, OFFSET FLAT:std::cout
call std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)
lea rax, [rbp-24]
mov rsi, rax
mov edi, OFFSET FLAT:std::cin
call std::basic_istream<char, std::char_traits<char> >::operator>>(float&)
mov rdx, rax
lea rax, [rbp-28]
mov rsi, rax
mov rdi, rdx
call std::basic_istream<char, std::char_traits<char> >::operator>>(float&)
mov rdx, rax
lea rax, [rbp-32]
mov rsi, rax
mov rdi, rdx
call std::basic_istream<char, std::char_traits<char> >::operator>>(float&)
movss xmm1, DWORD PTR [rbp-28]
movss xmm0, DWORD PTR [rbp-28]
mulss xmm0, xmm1
movss xmm2, DWORD PTR [rbp-24]
movss xmm1, DWORD PTR .LC1[rip]
mulss xmm1, xmm2
movss xmm2, DWORD PTR [rbp-32]
mulss xmm1, xmm2
subss xmm0, xmm1
movss DWORD PTR [rbp-4], xmm0
movss xmm0, DWORD PTR [rbp-4]
pxor xmm1, xmm1
ucomiss xmm0, xmm1
jbe .L12
mov eax, DWORD PTR [rbp-4]
mov DWORD PTR [rbp-36], eax
movss xmm0, DWORD PTR [rbp-36]
call std::sqrt(float)
movaps xmm1, xmm0
movss xmm0, DWORD PTR [rbp-28]
subss xmm1, xmm0
movss xmm0, DWORD PTR [rbp-24]
addss xmm0, xmm0
divss xmm1, xmm0
movaps xmm0, xmm1
movss DWORD PTR [rbp-8], xmm0
movss xmm1, DWORD PTR [rbp-28]
movss xmm0, DWORD PTR .LC3[rip]
xorps xmm1, xmm0
movss DWORD PTR [rbp-36], xmm1
mov eax, DWORD PTR [rbp-4]
mov DWORD PTR [rbp-40], eax
movss xmm0, DWORD PTR [rbp-40]
call std::sqrt(float)
movss xmm1, DWORD PTR [rbp-36]
subss xmm1, xmm0
movss xmm0, DWORD PTR [rbp-24]
addss xmm0, xmm0
divss xmm1, xmm0
movaps xmm0, xmm1
movss DWORD PTR [rbp-12], xmm0
mov esi, OFFSET FLAT:.LC4
mov edi, OFFSET FLAT:std::cout
call std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)
mov esi, OFFSET FLAT:std::basic_ostream<char, std::char_traits<char> >& std::endl<char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&)
mov rdi, rax
call std::basic_ostream<char, std::char_traits<char> >::operator<<(std::basic_ostream<char, std::char_traits<char> >& (*)(std::basic_ostream<char, std::char_traits<char> >&))
mov esi, OFFSET FLAT:.LC5
mov edi, OFFSET FLAT:std::cout
call std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)
mov rdx, rax
mov eax, DWORD PTR [rbp-8]
mov DWORD PTR [rbp-36], eax
movss xmm0, DWORD PTR [rbp-36]
mov rdi, rdx
call std::basic_ostream<char, std::char_traits<char> >::operator<<(float)
mov esi, OFFSET FLAT:std::basic_ostream<char, std::char_traits<char> >& std::endl<char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&)
mov rdi, rax
call std::basic_ostream<char, std::char_traits<char> >::operator<<(std::basic_ostream<char, std::char_traits<char> >& (*)(std::basic_ostream<char, std::char_traits<char> >&))
mov esi, OFFSET FLAT:.LC6
mov edi, OFFSET FLAT:std::cout
call std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)
mov rdx, rax
mov eax, DWORD PTR [rbp-12]
mov DWORD PTR [rbp-36], eax
movss xmm0, DWORD PTR [rbp-36]
mov rdi, rdx
call std::basic_ostream<char, std::char_traits<char> >::operator<<(float)
mov esi, OFFSET FLAT:std::basic_ostream<char, std::char_traits<char> >& std::endl<char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&)
mov rdi, rax
call std::basic_ostream<char, std::char_traits<char> >::operator<<(std::basic_ostream<char, std::char_traits<char> >& (*)(std::basic_ostream<char, std::char_traits<char> >&))
jmp .L6
.L12:
pxor xmm0, xmm0
ucomiss xmm0, DWORD PTR [rbp-4]
jp .L7
pxor xmm0, xmm0
ucomiss xmm0, DWORD PTR [rbp-4]
jne .L7
mov esi, OFFSET FLAT:.LC7
mov edi, OFFSET FLAT:std::cout
call std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)
mov esi, OFFSET FLAT:std::basic_ostream<char, std::char_traits<char> >& std::endl<char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&)
mov rdi, rax
call std::basic_ostream<char, std::char_traits<char> >::operator<<(std::basic_ostream<char, std::char_traits<char> >& (*)(std::basic_ostream<char, std::char_traits<char> >&))
mov eax, DWORD PTR [rbp-4]
mov DWORD PTR [rbp-36], eax
movss xmm0, DWORD PTR [rbp-36]
call std::sqrt(float)
movaps xmm1, xmm0
movss xmm0, DWORD PTR [rbp-28]
subss xmm1, xmm0
movss xmm0, DWORD PTR [rbp-24]
addss xmm0, xmm0
divss xmm1, xmm0
movaps xmm0, xmm1
movss DWORD PTR [rbp-8], xmm0
mov esi, OFFSET FLAT:.LC8
mov edi, OFFSET FLAT:std::cout
call std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)
mov rdx, rax
mov eax, DWORD PTR [rbp-8]
mov DWORD PTR [rbp-36], eax
movss xmm0, DWORD PTR [rbp-36]
mov rdi, rdx
call std::basic_ostream<char, std::char_traits<char> >::operator<<(float)
mov esi, OFFSET FLAT:std::basic_ostream<char, std::char_traits<char> >& std::endl<char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&)
mov rdi, rax
call std::basic_ostream<char, std::char_traits<char> >::operator<<(std::basic_ostream<char, std::char_traits<char> >& (*)(std::basic_ostream<char, std::char_traits<char> >&))
jmp .L6
.L7:
movss xmm1, DWORD PTR [rbp-28]
movss xmm0, DWORD PTR .LC3[rip]
xorps xmm1, xmm0
movss xmm0, DWORD PTR [rbp-24]
addss xmm0, xmm0
divss xmm1, xmm0
movaps xmm0, xmm1
movss DWORD PTR [rbp-16], xmm0
movss xmm1, DWORD PTR [rbp-4]
movss xmm0, DWORD PTR .LC3[rip]
xorps xmm0, xmm1
call std::sqrt(float)
movaps xmm1, xmm0
movss xmm0, DWORD PTR [rbp-24]
addss xmm0, xmm0
divss xmm1, xmm0
movaps xmm0, xmm1
movss DWORD PTR [rbp-20], xmm0
mov esi, OFFSET FLAT:.LC9
mov edi, OFFSET FLAT:std::cout
call std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)
mov esi, OFFSET FLAT:std::basic_ostream<char, std::char_traits<char> >& std::endl<char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&)
mov rdi, rax
call std::basic_ostream<char, std::char_traits<char> >::operator<<(std::basic_ostream<char, std::char_traits<char> >& (*)(std::basic_ostream<char, std::char_traits<char> >&))
mov esi, OFFSET FLAT:.LC5
mov edi, OFFSET FLAT:std::cout
call std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)
mov rdx, rax
mov eax, DWORD PTR [rbp-16]
mov DWORD PTR [rbp-36], eax
movss xmm0, DWORD PTR [rbp-36]
mov rdi, rdx
call std::basic_ostream<char, std::char_traits<char> >::operator<<(float)
mov esi, OFFSET FLAT:.LC10
mov rdi, rax
call std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)
mov rdx, rax
mov eax, DWORD PTR [rbp-20]
mov DWORD PTR [rbp-36], eax
movss xmm0, DWORD PTR [rbp-36]
mov rdi, rdx
call std::basic_ostream<char, std::char_traits<char> >::operator<<(float)
mov esi, OFFSET FLAT:.LC11
mov rdi, rax
call std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)
mov esi, OFFSET FLAT:std::basic_ostream<char, std::char_traits<char> >& std::endl<char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&)
mov rdi, rax
call std::basic_ostream<char, std::char_traits<char> >::operator<<(std::basic_ostream<char, std::char_traits<char> >& (*)(std::basic_ostream<char, std::char_traits<char> >&))
mov esi, OFFSET FLAT:.LC6
mov edi, OFFSET FLAT:std::cout
call std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)
mov rdx, rax
mov eax, DWORD PTR [rbp-16]
mov DWORD PTR [rbp-36], eax
movss xmm0, DWORD PTR [rbp-36]
mov rdi, rdx
call std::basic_ostream<char, std::char_traits<char> >::operator<<(float)
mov esi, OFFSET FLAT:.LC12
mov rdi, rax
call std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)
mov rdx, rax
mov eax, DWORD PTR [rbp-20]
mov DWORD PTR [rbp-36], eax
movss xmm0, DWORD PTR [rbp-36]
mov rdi, rdx
call std::basic_ostream<char, std::char_traits<char> >::operator<<(float)
mov esi, OFFSET FLAT:.LC11
mov rdi, rax
call std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)
mov esi, OFFSET FLAT:std::basic_ostream<char, std::char_traits<char> >& std::endl<char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&)
mov rdi, rax
call std::basic_ostream<char, std::char_traits<char> >::operator<<(std::basic_ostream<char, std::char_traits<char> >& (*)(std::basic_ostream<char, std::char_traits<char> >&))
.L6:
mov eax, 0
leave
ret
__static_initialization_and_destruction_0(int, int):
push rbp
mov rbp, rsp
sub rsp, 16
mov DWORD PTR [rbp-4], edi
mov DWORD PTR [rbp-8], esi
cmp DWORD PTR [rbp-4], 1
jne .L15
cmp DWORD PTR [rbp-8], 65535
jne .L15
mov edi, OFFSET FLAT:std::__ioinit
call std::ios_base::Init::Init()
mov edx, OFFSET FLAT:__dso_handle
mov esi, OFFSET FLAT:std::__ioinit
mov edi, OFFSET FLAT:std::ios_base::Init::~Init()
call __cxa_atexit
.L15:
nop
leave
ret
_GLOBAL__sub_I_main:
push rbp
mov rbp, rsp
mov esi, 65535
mov edi, 1
call __static_initialization_and_destruction_0(int, int)
pop rbp
ret
.LC1:
.long 1082130432
.LC3:
.long 2147483648
.long 0
.long 0
.long 0