If Then Else ne Assembly /MIPS /R3000 RISC arch

If at first you don’t succeed, Skydiving is definitely not for you.

E nisa me kete thenie kategorine e re “Assembly” ne albanianwizard.org sepse dihet qe askush nuk eshte perfekt dhe sidomos ne assembly duhen shume shume shume shume… prova dhe deshtime perpara se te arrihet nje rezultat i deshiruara kjo sepse nuk eshte gjuhe si gjith te tjerat, per te njohur progarmimin ne kete gjuhe te nivelit te ulet duhet te njohesh mire rregjistrat e sistemit, formatin e instruksioneve dhe te njohesh ne detaj menyren se si punon arkiktektura e nje kompiuteri.

Po marrim perkthimin e nje instruksioni nga pseudocode ne kodin real ne assembly.

Ajo qe perdorim me shume ne programim jane if else dhe perkatesisht ; Nese bie shi (merr çader) tjeter (mos e merr çadren)

Fillojm :

if ($t5 < 0 ) {$s0 = 0 - $t5; $t1 = $t1 + 1}
else {$s0 = $t5; $t2 = $t2 + 1}

Formati i mesiperm quhet pseudocode pasi eshte thjesht per te na lehtesuar kuptimin ndersa kjo qe pason eshte kodi real ne assembly per arkitekturen MIPS

bgez $t5, else  #if /nese ($t5 eshte > ose = 0 ) branch /kalo to else /tek else
sub $s0, $zero, $t5  # $s0 merr negativen e $t8
addi $t1, $t1, 1 #Shtojm vleren e rregjistrit $t1 nga 1
b      next       #krijojm nje cikel (branch) verdallisemi rreth kodit else
else:
            ori   $s0 ,$t5 , 0   #$s0 merr nje kopje te $t5
            addi $t2, $t2, 1  #shtojm tek rregjistri $t2 nga 1
next:

Shpjegim per ato “gjerat e çuditshme qe ndodhen” , add, ori, li, beq, bgez etj jane instruksionet assembly dhe ato qe shenuam me $t0, apo $s1,2,3,4,5,6… jane rregjistrat e proçesorit te cilet jane nga 32 bit dhe secili nga ata kane funksion te caktuar te cilet do i shohim ne temat e ardhshme :)

Leave a Reply

Your email address will not be published. Required fields are marked *