[ vidonk @ 20.03.2020. 20:46 ] @
Pozdrav forumasi, imam jedan MIPS assembly kod koji bih volio da bolje razumijem, da vidim "siru sliku", na zalost MARS i SPIM ne podrzavaju "hi" i "lo" registre pa ga ne mogu pokrenuti u emulatoru i izvrsiti lorak po korak, mozda mi neko moze pomoci i oko toga. Evo ga kod i u komentarima sam naveo onoliko koliko znam Code: .file 1 "arry.c" .section .mdebug.abi32 .previous .gnu_attribute 4, 3 .abicalls .option pic0 .comm niz,48,4 .globl broj .section .bss,"aw",@nobits .align 2 .type broj, @object .size broj, 4 broj: .space 4 .text .align 2 .globl main .set nomips16 .ent main .type main, @function main: .frame $fp,8,$31 # vars= 0, regs= 1/0, args= 0, gp= 0 .mask 0x40000000,-4 .fmask 0x00000000,0 .set noreorder .set nomacro addiu $sp,$sp,-8 ;add 8 byts (2words) to current sp and store it in to sp sw $fp,4($sp) ;save old fp move $fp,$sp ;move sp to fp lui $2,%hi(niz) ;Load upper immediate first "num" of A byts addiu $2,$2,%lo(niz) ;Add immediate unsigned lower half of A lw $3,32($2) ;loadword lw $3, offset($s) lui $2,%hi(broj) ;Load upper immediate to register hi to upper 32 bits stored in special register hi lw $2,%lo(broj)($2) ;Load word register hi to Lower 32 bits stored in special register lo nop addu $3,$3,$2 ;add $2+$3 and store it in to $3 lui $2,%hi(niz) ;Load upper immediate first "num" of A byts addiu $2,$2,%lo(niz) ;Add immediate unsigned lower half of A sw $3,48($2) ;store word move $2,$0 ;set $2 to be 0 move $sp,$fp ;move frame ppinter to stack pointer, "exit rutine resore stack" lw $fp,4($sp) ;loart word stack pointer + 4 to fp "exit rutine resore stack" addiu $sp,$sp,8 ;add imidiate unisign stack pointer + 8 "exit rutine resore stack" j $31 ;return nop .set macro .set reorder .end main .size main, .-main .ident "GCC: (Realtek RSDK-4.6.4 Build 424) 4.6.4" na pr: nije mi jasno zasto se na pocetku programa "zauzima" 8 bajta ? [Ovu poruku je menjao vidonk dana 20.03.2020. u 22:50 GMT+1] |