GATEverse
← GATE CSE 2023

Q31

MCQ2 marks, −0.67

Consider the given C\text{C}-code and its corresponding assembly code, with a few operands U1-U4\text{U1-U4} being unknown. Some useful information as well as the semantics of each unique assembly instruction is annotated as inline comments in the code. The memory is byte-addressable. //C-code int a[10], b[10], i; // int is 32 bit for(i=0; i<10; i++) a[i] = b[i] * 8; ;assembly code (; indicates comments) ;r1-r5 are 32-bit integer registers ;initialize r1=0, r2=10 ;initialize r3, r4 with base address of a, b L01: jeq r1, r2, end ;if(r1==r2) goto end L02: lw, r5, 0(r4) ;r5 <- Memory[r4+0] L03: shl, r5, r5, U1 ;r5 <- r5 << U1 L04: sw, r5, 0(r3) ;Memory[r3+0] <- r5 L05: add, r3, r3, U2 ;r3 <- r3+U2 L06: add, r4, r4, U3 L07: add, r1, r1, 1 L08: jmp U4 ;goto U4 L09: end Which one of the following options is a CORRECT\text{CORRECT} replacement for operands in the position (U1, U2, U3, U4)\text{(U1, U2, U3, U4)} in the above assembly code?

Sign in to save attempts.

Loading…