Translate the following worthless function from C to LC-2 assembler. Use Chapter 14 style activation records to transmit parameters.
int *dmbprg(int *X, int *Y) {
if (Y[2] == Y[3])
*X = Y[2] ;
else
*X = Y[2] + 1 ;
return X ;
}
;; Activation record for dmbprg ;; ;; 0 -- return value int *dmbprg ;; 1 -- return address ;; 2 -- dynamic link ;; 3 -- argument 1 int *X ;; 4 -- argument 2 int *Y ;; .orig x3000 dmbprg str r7, r6, #1 ; store return address ldr r0, r6, #4 ; R0 <- Y ldr r1, r0, #2 ; R1 <- Y[2] ldr r2, r0, #3 ; R2 <- Y[3] not r2, r2 add r2, r2, #1 add r2, r1, r2 ; R2 <- Y[2] - Y[3] brz noadd add r1, r1, #1 ; R1 <- Y[2] + 1 noadd ldr r0, r6, #3 ; R0 <- X str r1, r0, #0 ; *X <- R1 str r1, r6, #0 ; save return value ldr r7, r6, #1 ; load return address ldr r6, r6, #2 ; load dynamic link ret .end