how do you Translate the following C++ program into an Assembly Language program
ID: 3675131 • Letter: H
Question
how do you Translate the following C++ program into an Assembly Language program. Comment each line except STOP & .END. Add something to the output that makes this program uniquely yours. Cut & paste the Assembler Listing into your document and paste a screen shot of the Output area of the PEP/8.
#include <iostream>
using namespace std;
int num = 13;
int main( ) {
cout<<num<<endl;
num = num - 8;
cout<<num<<endl;
num = num - 3;
cout<<num<<endl;
num = num - 2;
cout<<num<<endl;
return 0;
}
Explanation / Answer
main:
subq $8, %rsp
movl num(%rip), %esi
movl std::cout, %edi
call std::basic_ostream<char, std::char_traits<char> >::operator<<(int)
movq %rax, %rdi
call std::basic_ostream<char, std::char_traits<char> >& std::endl<char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&)
movl num(%rip), %eax
movl std::cout, %edi
leal -8(%rax), %esi
movl %esi, num(%rip)
call std::basic_ostream<char, std::char_traits<char> >::operator<<(int)
movq %rax, %rdi
call std::basic_ostream<char, std::char_traits<char> >& std::endl<char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&)
movl num(%rip), %eax
movl std::cout, %edi
leal -3(%rax), %esi
movl %esi, num(%rip)
call std::basic_ostream<char, std::char_traits<char> >::operator<<(int)
movq %rax, %rdi
call std::basic_ostream<char, std::char_traits<char> >& std::endl<char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&)
movl num(%rip), %eax
movl std::cout, %edi
leal -2(%rax), %esi
movl %esi, num(%rip)
call std::basic_ostream<char, std::char_traits<char> >::operator<<(int)
movq %rax, %rdi
call std::basic_ostream<char, std::char_traits<char> >& std::endl<char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&)
xorl %eax, %eax
addq $8, %rsp
ret
subq $8, %rsp
movl std::__ioinit, %edi
call std::ios_base::Init::Init()
movl $__dso_handle, %edx
movl std::__ioinit, %esi
movl std::ios_base::Init::~Init(), %edi
addq $8, %rsp
jmp __cxa_atexit
num:
.long 13
Related Questions
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.