How do you convert the following C code to Pep/9 assembly code #include <iostrea
ID: 3594995 • Letter: H
Question
How do you convert the following C code to Pep/9 assembly code
#include <iostream>
using namespace std;
int main()
{
int i, j, N;
/* Input number of rows from user */
printf("Enter number of rows: ");
scanf("%d", &N);
/* Iterate through N rows */
for(i=1; i<=N; i++)
{
/* Iterate over columns */
for(j=1; j<=N; j++)
{
/* Print star for each column */
printf("*");
int k;
for(k=1; i<=N; k--)
{
/* Print star for each column */
printf("+");
break;
}
}
printf(" ");
/* Move to the next line/row */
printf(" ");
}
return 0;
}
Explanation / Answer
please find the below assembly code for your c code
.file 1 ""
.section .mdebug.abi32
.previous
.nan legacy
.module fp=32
.module nooddspreg
.abicalls
.comm std,4,4
.rdata
.align 2
$LC0:
.ascii "Enter number of rows: "
.align 2
$LC1:
.ascii "%d"
.text
.align 2
.globl main
.set nomips16
.set nomicromips
.ent main
.type main, @function
main:
.frame $fp,48,$31 # vars= 16, regs= 2/0, args= 16, gp= 8
.mask 0xc0000000,-4
.fmask 0x00000000,0
.set noreorder
.cpload $25
.set nomacro
addiu $sp,$sp,-48
sw $31,44($sp)
sw $fp,40($sp)
move $fp,$sp
.cprestore 16
movz $31,$31,$0
lw $2,%got($LC0)($28)
nop
addiu $4,$2,%lo($LC0)
lw $2,%call16(printf)($28)
nop
move $25,$2
.reloc 1f,R_MIPS_JALR,printf
1: jalr $25
nop
lw $28,16($fp)
addiu $2,$fp,36
move $5,$2
lw $2,%got($LC1)($28)
nop
addiu $4,$2,%lo($LC1)
lw $2,%call16(__isoc99_scanf)($28)
nop
move $25,$2
.reloc 1f,R_MIPS_JALR,__isoc99_scanf
1: jalr $25
nop
lw $28,16($fp)
li $2,1 # 0x1
sw $2,24($fp)
b $L2
nop
$L8:
li $2,1 # 0x1
sw $2,28($fp)
b $L3
nop
$L7:
li $4,42 # 0x2a
lw $2,%call16(putchar)($28)
nop
move $25,$2
.reloc 1f,R_MIPS_JALR,putchar
1: jalr $25
nop
lw $28,16($fp)
li $2,1 # 0x1
sw $2,32($fp)
nop
lw $2,36($fp)
lw $3,24($fp)
nop
slt $2,$2,$3
bne $2,$0,$L5
nop
li $4,43 # 0x2b
lw $2,%call16(putchar)($28)
nop
move $25,$2
.reloc 1f,R_MIPS_JALR,putchar
1: jalr $25
nop
lw $28,16($fp)
nop
$L5:
lw $2,28($fp)
nop
addiu $2,$2,1
sw $2,28($fp)
$L3:
lw $2,36($fp)
lw $3,28($fp)
nop
slt $2,$2,$3
beq $2,$0,$L7
nop
li $4,10 # 0xa
lw $2,%call16(putchar)($28)
nop
move $25,$2
.reloc 1f,R_MIPS_JALR,putchar
1: jalr $25
nop
lw $28,16($fp)
li $4,10 # 0xa
lw $2,%call16(putchar)($28)
nop
move $25,$2
.reloc 1f,R_MIPS_JALR,putchar
1: jalr $25
nop
lw $28,16($fp)
lw $2,24($fp)
nop
addiu $2,$2,1
sw $2,24($fp)
$L2:
lw $2,36($fp)
lw $3,24($fp)
nop
slt $2,$2,$3
beq $2,$0,$L8
nop
move $2,$0
move $sp,$fp
lw $31,44($sp)
lw $fp,40($sp)
addiu $sp,$sp,48
j $31
nop
.set macro
.set reorder
.end main
.size main, .-main
.ident "GCC: (Ubuntu 5.4.0-6ubuntu1~16.04.1) 5.4.0 20160609"
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.