Shkarko nga divshare pa pritur

Isha duke bere prova me divshare dhe kuriozia ishte qe mund te kalosh direkt tek faqa e shkarkimit pa klikuar neper ads, apo faqe ridrejtuese dhe pa pritur sekondat.
SI?
Marrim nje link te tipit:
divshare[dot]com/download/6642219-284
Do jemi tek nje faqe e do na hapet nje popup automatikisht. [rreklama]
Mbas kesaj do te ridrejtohemi tek nje faqe tjeter ku do jene sekondat
divshare[dot]com/i/6642219-284
E me ne fund, do te ridrejothemi tek faqa e shkarkimit
divshare[dot]com/download/launch/6642219-284

Po sikur ^?^?

😀   😀   😀
Nese shkojm direkt tek faqa e fundit
divshare[dot]com/download/launch/6642219-284
Do te hapet nje popup, mbylleni dhe shkruajeni dhe njehere linkun dhe downloadi do te filloj ne çast.
Pra
1. Fusni ne web browser
divshare[dot]com/download/launch/6642219-284
Mbas kesaj automatikisht divshare do e modifikoj linkun dhe do e kthej ne:
divshare[dot]com/download/6642219-284
Kurse ne qe e kemi te kopjuar ne te njejtin moment do i bejm perseri paste tek bari i browserit
divshare[dot]com/download/launch/6642219-284

NE perfundim, marrim nje link normal dhe midis download dhe numrave shtojm /launch/ dhe i bejm paste 2 here ne browser (tek bari i adreses) dhe gjithçka mbaroi, shkarkimi duhet te nisi menjehere.

ENJOY 😉

PS- Meqenese kemi te bejm me divshare po e fusim tek kategoria Turpi i Turpeve. [divshare zgjohu, bota perdor linqe te modifikueshme (i brendshmi nga serveri dhe jo external link)]

Formati i Instruksioneve ne arkitekturen MIPS

Atomi ne Computing perfaqsohet nga 1 bit, e cila eshte njesia me e vogel me te cilen mund te paraqiten te dhena.
Siç e kemi then dhe tek Binary – Bit te verteta dhe sekrete

1 bit perfaqsohet nga nje impuls elektrik i cili mund te kete vlere nga 3-5 v e ne kete rast do te thote 1, ose kalon rryme ose mund te kete  nje vlere nga 0-3 v e ne kete rast do te thote 0, ose s’kalon rryme.
Menyra se si njeriu i jep instruksione makines ndryshon nga menyra se si kompiuteri i shikon instruksionet.
Meqenese kemi nje Set Insturksionesh atehere kemi dhe nje format instruksionesh perderisa gati per ç’do instruksion ne arkitekture duhet te perdoren rregjistrat.
Regjistrat ne MIPS kane secili nga nje numer, duke filluar nga $zero apo $0 e deri tek te fundit fillojn nga 0 deri tek numri 31, psh nga $t0 deri tek $t7 i konrespondojn 8 – 15.

Meqenese kemi ecur me shembujt :D, po marim nje pseudocode, te cilin do e kthejm ne instruksion assembly (ne kete rast bejm rolin e kompilatorit) e pastaj do e shohim instruksionin me syrin e kompiuterit i cili shikon “ne binar” dhe “shikon” ashtu siç eshte programuar per te “pare”. Me “menyren e shikimit” nenkuptohet ne menyre simbolike Formati i Instruksionit dhe Seti i Instruksioneve.

1.Njeriu Mendon

A[8] = h + A[8];

Lexojm pseudinstruksionin dhe shohim qe ne te kemi vetem 1 shkronje te pashoqeruar me konstante ([8]) e cila eshte h-ja kurse A[8] ne te dy rastet na tregon qe do te kemi pune me memorjen.
Marrim dhe interpretojm A[8]
A, ne kete rast eshte nje array (grup, tog, te dhenash) e cila ka dhe nje konstante 8 , pra eshte adresa e cila punton konstanten 8. E perkthyer, eshte nje rregjister ne proçesor i cili permban lidhjen me fillimin e nje adrese ne memorje e kete rregjister do e shenojm me $t1. Kurse h do e lidhim me rregjistrin $s2.
Ok, tani qe njohem se me ke kemi te bejm te interpretojm pak ate qe kerkohet.
ne na thuhet ne fjale te tjera a = c + a ku te dy a-te na kerkojn qe te seleksionojm ne memorje nje qeli dhe te dhenat e saj ti mbledhim me nje rregjister c pastaj kete shume ta depozitojm perseri ne te njejten qeli.
Pra, do te nxjerrim te dhena nga memorja, dhe do te fusim te dhena ne te.
Te nxjerresh te dhena nga memorja ne Mips nuk mund te behet vetem se me lw (load word) dhe te fusesh te dhena ne te nuk behet vetem se me sw (store word).

2.Njeriu perkthen (ne kod assembly)

Le te kthejm tani pseudokodin ne kod assembly ne menyre qe pastaj assembleri te perkthej kete kod ne machine code apo kod makine i cili interpretohet ne baze te Instruction Set dhe instruksionet nuk kalojn limitet apo me sakt nuk dalin nga formati i tyre i percaktuar nga ata qe kane dizenjuar hardwerin.
Kishim :

A[8] = h + A[8];

Marrim pjesen e djathte h + A[8]; ku kemi h-n ($s2) por na mungon A[8].
A-ja eshte ne regjistrin $t1 ne te cilin mbahet base address e cila punton ne nje qeli te memorjes.
[8] eshte nje konstante qe ne kete rast do e quajm offset dhe na thote qe nga adresa baze, do te spostohemi 8 dhe do te selektojm ate qeli te memorjes qe na intereson por ne kete rast do e shumezojm me 4 ne menyre qe te selektoj qeline e plote te memorjes (32 bit) dhe jo vetem 1 byte.

Ne kete rast kemi 32($t1).
E shpjegojm me mire,

Proçesori  (rregjistri $t1 – 32 bit)

$t1  (ketu qendron dhe base address e cila shenon fillimin e nje qelie ne memorje)

Memorja siç e dime ndahet ne qeli dhe qelia qe shenon fillimin ne instruksionin qe na intereson do te selektohet nga adresa e depozituar ne rregjistrin e proçesorit, kesaj do ti shtohet nje offset prej 32.
Rezultatin po e depozitojm ne $t0 dhe kemi:

lw $t0, 32($t1)  #Regjitri temporan t0 merr A[8]
add $t0, $s2, $t0 #Rezultatin e mbledhim me h-n dhe e depozitojm ne $t0

Tani na duhet qe kete h +A[8] ta sjellim perseri aty ku ishte , pra ne A[8] e per kete na duhet sw

sw $t0, 32($t1) #Permbajtjen e $t0 e futem perseri ne qeline e memorjes $t1+32 offset qe ndodhet ne RAM

Pra ne fjale te tjera, formati i nje instruksioni lw sw eshte i tipit lw $rregjistri $Adresa_RAM e cila mund te jete e lloit vetem nje rregjister psh lw $s2 ($s1) [ne kete rast $s1 permban adresen qe gjendet ne RAM] ose mund te jete e nje formati pak me te komplikuar te tipit lw $s1 4($s2) ku 4($s2) do te thote adresa_RAM + 4

3.Kompilatori (assembler) Perkthen

Tani qe e kemi kodin ne assembly;

lw $t0, 32($t1)
add $t0, $s2, $t0
sw $t0, 32($t1)

Mund tja japim makines ta interpretoj ne baze te formatit te instruksioneve dhe Instruction Set.
Marim nje instruksion te thjesht nga kodi i mesiperm;
add $t0, $s2, $t0
Secila nga ato qe jane shkruatjur ka hapesiren e vet dhe ne nje perfaqsim decimal do te ishte:

0   (add) 18  ($s2) 8         ($t0) 8        ($t0) 0       32      

Secili nga segmentet quhet fushe.
Pse egzistojn keto “formate” ?
Sikur mos te egzistonin atehere kompiuteri nuk do te merrte vesh a duhet te bej add, kush jane operandet e cili eshte rregjistri i destinacionit.. Per kete po e shpjegojm pak..
Fusha e pare (0) dhe e fundit (32) te kombinuara me njera-tjetren i thone kompiuterit se ç’fare instruksioni duhet te egzekutoje, ne kete rast qe duhet te egzekutoj add e jo diçka tjeter.
18 tregon operandin e pare, ne kete rast rregjistrin $s2, 8 tregon operandin e dyte qe eshte $t0 dhe 8tjeter tregon rregjistrin e destinacionit, ne kete rast fusha e peste eshte e pa perdorur keshtu qe po e lem 0.
Por kjo normalisht eshte qe ne ta kuptojm me mire, le te shohim se si e interpreton makina pasi siç e tham eshte pak e trashe 😀 dhe merr vesh vetem impulse elektrike me intensitet nga 3-5v (1) e impulse nga 0-3v (0)

4.Kompiuteri Interpreton

Ne realitet ate qe shkruajtem ne decimal siper (e kam fjalen per formatin) kompiuteri e shikon ne kete form:

000000 [6 bit] 10010 [5 bit qe perfaqsojn 18-ten
pra regjistrin $s2 ]
01000 [regjistri 8 / $t0] 01000 [regjistri 8 / $t0] 00000 [5 bite te paperdorur] 100000 [=32 / 6 bit kod funksioni]

Siç e shohim numri i rregjistrit per kompiuterin eshte i paraqitur ne kod binar, dhe ka secila prej instruksioneve madhesine e saj, ç’do regjister qe ne e emerojm me decimal kompiuteri e emeron gjithashtu por me binar.
Lind pyetja, si arrin te dalloj kompiuteri se kush eshte operandi i pare, kush i dyti dhe kush rregjistri i destinacionit?
Per kete, kemi fushat dhe emertimet e tyre:

op [6 bit] rs [5 bit] rt [5 bit] rd [5 bit] shamt [5 bit]] funct [6 bit]
  • op: Operacioni i instruksionit, tradicionalisht i quajtur opcode
  • rs:  Regjistri i pare, (operandi i pare)
  • rt: Regjistri i dyte, (operandi i dyte)
  • rd: Regjistri i Destinacionit
  • shamt: Shift amount (perdoret per instruksione te tjera kur duam te levizim bitet)
  • funct: Funksioni, Ky kod selekton variantin e opcode , dhe ndonjehere quhet dhe function code.

Bukur, tani kompiuteri mund te dalloj shapin nga sheqeri dhe mund te egzekutoj kodin pa problem ne baze te Instruction Set, psh nese e marrim te njejtin kod dhe perpiqemi ta egzskutojm ne nje kompiuteri me arkitekture x86 kompiuteri do te na thote:
R U CRAZY?!!
Kjo sepse ai nuk njeh formatin e instruksionit dhe regjistrat jane te tjere… ne fjale te tjera vetem tabloja konceptuale mund te kete ngjashmeri, praktika eshte komplet e ndryshme.
Problem,
Po me instruksionet e tjera si i behet hallit ?, Si ja ben kompiuteri kur i duhen me shume bit per ndonje instruksion ose si ne rastin e lwsw ku kemi te bejm vetem me 2 rregjistra?

Per kete nuk egziston vetem ky format instruksioni por 3 formate te tilla (ne realitet 4, por neve 3 na duhen per momentin)

  • Formati R

Ky grup formati perfshin te gjith ato instruksione qe nuk kerkojn nje vlere imediate , nje offset apo nje adrese memorjeje (pra nuk shkruajn apo lexojn ne memorje) Pra ky grup perfshin instruksione logjike – aritmetike si dhe jalr jr.
Per me teper:

opcode (6) rs (5) rt (5) rd (5) sa (5) function (6)
Instruksioni Funksioni
add rd, rs, rt 100000
addu rd, rs, rt 100001
and rd, rs, rt 100100
break 001101
div rs, rt 011010
divu rs, rt 011011
jalr rd, rs 001001
jr rs 001000
mfhi rd 010000
mflo rd 010010
mthi rs 010001
mtlo rs 010011
mult rs, rt 011000
multu rs, rt 011001
nor rd, rs, rt 100111
or rd, rs, rt 100101
sll rd, rt, sa 000000
sllv rd, rt, rs 000100
slt rd, rs, rt 101010
sltu rd, rs, rt 101011
sra rd, rt, sa 000011
srav rd, rt, rs 000111
srl rd, rt, sa 000010
srlv rd, rt, rs 000110
sub rd, rs, rt 100010
subu rd, rs, rt 100011
syscall 001100
xor rd, rs, rt 100110
  • Formati I

Ne ndryshim nga formati i mesiperm ka vetem 4 fusha, ku njera eshte e rezervuar per Immediate (vlera te tipit konstante prej 16 bitesh).
Pra direkt besoj se kuptojm qe perdoret per branch-e offsete, lexime dhe shkrime ne memorje.

opcode (6) rs (5) rt (5) immediate (16)

Instruksione te ketij formati jane:

Instruksioni Opcode Shenime per opcode
addi rt, rs, immediate 001000
addiu rt, rs, immediate 001001
andi rt, rs, immediate 001100
beq rs, rt, label 000100
bgez rs, label 000001 rt = 00001
bgtz rs, label 000111 rt = 00000
blez rs, label 000110 rt = 00000
bltz rs, label 000001 rt = 00000
bne rs, rt, label 000101
lb rt, immediate(rs) 100000
lbu rt, immediate(rs) 100100
lh rt, immediate(rs) 100001
lhu rt, immediate(rs) 100101
lui rt, immediate 001111
lw rt, immediate(rs) 100011
lwc1 rt, immediate(rs) 110001
ori rt, rs, immediate 001101
sb rt, immediate(rs) 101000
slti rt, rs, immediate 001010
sltiu rt, rs, immediate 001011
sh rt, immediate(rs) 101001
sw rt, immediate(rs) 101011
swc1 rt, immediate(rs) 111001
xori rt, rs, immediate 001110
  • Formati J

Ketu kemi vetem instruksionin jal dhe j (jump) te cilat kerkojn 26 bite dhe kane nevoj vetem per opcode dhe adresen ku duhet te behet jump.
Instruksioni Opcode       Target
j   emri            000010        adresa e koduar e emrit
jal   emri        000011         adresa e koduar e emrit

Tani qe shpjeguam dhe formatin e instruksioneve mund te perfundojm duke perkthyer per kompiuterin kodin tone :)

Instruksionet ne kodin tone ishin lw, add, sw pra kemi 2 instruksione te formatit I dhe 1 te formatit R.
Le te bejm nje tabele me kodin e tyre ne binar pra, ashtu siç e interpreton kompiuteri instruksionin.

op (code) rs rt rd address/shamt funct
100011 [35 – lw] 01001 [9 – $t1] 01000   [8 – $t0] 0000000000100000  [32]
0   (add) 18  ($s2) 01000   [8 – $t0] 01000   [8 – $t0] 0 0000000000100000  [32]
101011 [43 – sw] 01001 [9 – $t1] 01000   [8 – $t0] 0000000000100000  [32]

Mire, ja ku mesuam dhe se si makina interpreton kodin ton 😉
Ka ndonje paqartesi?

Regjistrat e proçesoreve Kaos apo thjeshtesi? [MIPS]

Gjejm shpesh te shkruhet ne kod, kur shikojm programet tona assembly kode te tipit:
add $s0, $s1, $s2
E na thone qe $s0 = $s1 + $s2 dhe kuptojm qe vlera e rregjistrave $s1 dhe $s2 do te mblidhet dhe do te depozitohet tek rregjistri $s0 por ku qendron “kaosi”?
Problemi qendron qe nderkoh qe lexojm kodin assembly nuk shohim as vleren e rregjistrit $s1 dhe as ate te $s2-shit dhe themi,
Nga dreqin doli 10001001 tek $s0?

Ne realitet proçesi eshte shume i thjesht, dhe detyren per te asociuar variabilat e programeve me rregjistrat e ka kompilatori [kujdes po flasim per kompilator assembler dhe jo kompilatorin qe perkthen gjuhen nga niveli i lart ne ate te voglin].

Marrim 2 ushtrime per te shpjeguar kete fenomen dhe thjeshtesine e tij.

Ushtrimi 1

Pseudokodi;
a = (b + c) – (d + e);
Si eshte kodi assembly i ketij pseudokodi?

Ne kete rast ne na takon te marrim persiper rolin e assemblerit dhe do i lidhim ne vlerat me rregjistrat dhe perkatesisht;
meqenese kemi te bejm me variabila siç e mesuam tek ;
http://albanianwizard.org/informatika_shqiptare/arkitekture_kompiuterike/gjuha_e_programimit_assembly/regjistri-file-register-file-mips/

Rregjistri qe perdoret ne te tilla raste eshte seria e rregjistrave $s keshtu qe:
a = $s0; b = $s1; c = $s2; d = $s3; e = $s4;
Tani vazhdojm te kryejm veprimet me elementare dhe e ndajm kodin ne 2 pjese (b+c) dhe (d+e) dhe i depozitojm vlerat ne rregjistra temporan $t0 pasi nuk na duhen per shume kohe keshtu qe kodi assembly i bie te jete:

add $t0, $s1, $s2       # t0 = $s1 + $s2 = b + c
add $t1, $s3, $s4       # t1 = $s3 + $s4 = d + e
sub $s0, $t0, $t1,      # s0 = $t0 - $t1 = (b + c) - (d + e)

Nga vet komentimi besoj se kuptuam se ç’fare ndodhi.. le te sjellim nje shembull tjeter..

Ushtrimi 2

Perpara se te shikojm se si zgjidhet le te fiksojm dy ligje qe na duhen;

  1. Ne ç’do instruksion Mips, egzekuton gjithmon vetem 1 funksion i cili pershkruhet medoemos nga 3 variabila ku secila nga ato variabila i perket nje rregjistri. psh sub $s0, $t1, $t2
  2. Te vetmet instruksione qe perdorin memorjen ne aritekturen MIPS jane lw (load word) dhe sw (store word) te cilat me ane te nje instruksioni te posatshem qe quhet Data Transfer Instruction jane ne gjendje te marrin dhe te japin informacione nga memorja RAM

Vazhdojm me ushtrimin,
Le te marrim qe assembleri (pasi e pame njehere kete proçes) ka asociuar variabilat t dhe y me rregjistrat $s1 dhe $s2 dhe le te marrim qe kemi nje array (ne kete rast grumbull te dhenash) qe “fshihet” mbas ‘adreses baze’ ( lokacioni ne memorje qe shenon fillimin e te dhenave) te quajtur G mbas te ciles gjenden 100 fjale dhe kete adrese baze asembleri ka caktuar qe te gjendet tek rregjistri $s3.
Kalojm tek pseudokodi:
t = y + G[8];
I kemi shpjeguar te gjitha perveç [8]-tes e cila eshte nje konstante. qe do te thote se do te selektohen 8 elemente.
Ç’fare po ndodh?
Ne po na jepet ne kete rast nje lokacion memorjeje, dhe na thuhet qe adresa per te selektuar tog-dateshin (tog-fjaleshin) e isntruksioneve qe gjendet ne memorje eshte e perbere nga adresa fillestare (baze) + elementet per tu selektuar qe jane 8.
Adresa = adresen baze + 8 elemente = g + [8] e te gjitha keto do te magazinohen ne regjistrin $s3
Mbas kesaj na duhet qe ta mbledhim me y ($s2) dhe shumen ta depozitojm ne t ($s1).
Nga ky pseudokod nxjerrim qe fillimisht duhet te terheqim te dhena nga memorja dhe kete e ben vetem lw (load word);

lw $t0, 8($s3) #Momentalisht rregjistri $t0 merr g -n qe ndodhet tek $s3 + 8 (konstanten)

mbas kesaj besoj qe eshte e thjeshte, duhet vetem te marrim ate qe gjendet ne $t0 (G[8]) ta mbledhim me y ($s2) dhe ta magazinojm tek ($s1).

add $s1, $s2, $t0     # t = y + G[8]

Konstantja ne kete rast (8) ne nje instruksion per levizje te dhenash quhet offset kurse regjistri qe i shtohet (G) quhet rregjistri baze.

Kompjuterat Fotonik

A keni degjuar ndonjehere per kete lloj kompjuterash??

Mendoj se jo pasi eshte teknologji qe eshte akoma eksperimentale por shum shpejt do te behet realitet. Sa po kalon koha dhe sa vjen po degjojme gjithmone e me shume po degjojme per shfrytezimin e drites per komunikim apo per regjistrim apo edhe ne mjeksi dhe ne shume fusha te tjera. Kjo pasi drita eshte shume e shpejte ka gjeresi bande pasi ka nje diapazon te gjere frekuencash nuk eshte e demshme dhe mund te mexhahohet me kosto te ulet. Pikerisht duhet te dijme qe drita perbehet nga fotone qe perfaqesojne energjine qe leshojne elektronet nga kalimi nga nivelet e eksituar ne nivelin baze. Te njejten metode pune ndjekin ne parim edhe lazerat.

Por kompjuterat cfar lidhje kane??

Kemi pare qe ne praktike qe tek fibrat optike kemi perdorimin e drites lazer per transmetimet e informacionit. Dhe nga kjo lindi dhe ideja ime pse mos te zevendesojme telat e bakrit ne qarqet elektronike apo edhe pjeset e tjera lidhese te kompjuterit me fibra. Nje ide tjeter do te ishte zevendesimi i hardisqeve magenetike me hardiqse optike dhe gjithashtu memoriet ram.

Po cfar te mire do te kishte dhe si eshte parimi i punes se ketyre kompjuterave .

Atehere normalisht dime se nese zevendesojme elektronet me fotone kemi nje shpejtesi deri ne 10 here me te madhe te trasmetimit te te dhenave . Problem i rendesishem i elektronikes qe ka te bej me nxehjen eliminohet. Dhe gjithashu kemi nje ulje te energjise elektrike qe do te duheshe per te aktivizuar keto kompjutera, pa folur pastaj per shuarje qe eshte mjaft e vogel dhe per nje gjeresi bande shume e shume me te gjere. Kocepti i punes qendron ne kalimin e drites infra te kuqe neper fibrat optike te instaluara ne kompjutera dhe gjithashtu gjenerimi i spektrit infra te kuq i cili del nga dioda lazer. Duhet te dime qe parimi i punes eshte pothuasje i njejte me kompjutarat e zakonshem ndryshimi i vete eshte se punojne me fotone dhe jo me me elektrone. Gjithashtu transistoret e sotem mund te zevendesohem me tranzistore optike qe jan zbuluar, rezistencat me analoget e tyre rezistencat optike. Po chipet?? Edhe per keto ka nje pergjigje pasi Inteli ka prodhuar chipet e para fotonike qe kane nje shpejtesi perpunimi prej 30gb/s. Kjo deri para se te kerkoja ne internet ishte thjesht nje ide e nje studenti te Inxhenjerise Fizike qe jam une, pasi ne shkolle studioj lasera dhe optike. Por mesa duket dikush e kishte menduar para meje dhe kishin investuar firma si Intel dhe Nasa per te nxjerre prototipet e pare laboratorik.

Ah me humbi nje mundesi per tu bere i famshem 😀 haha. Keto teknologji do te bejn nje revolucion ne boten e kompjuterave sic ben dhe fibrat optike ne transmetimin e te dhenave.

Regjistri file (register file) /MIPS

Yep, jemi ne arkitekturen mips, per ata qe e nenvleftesojn ta dine se playstation, perdor proçesor MIPS si dhe gjen aplikim shume ne paisjet elektronike ne saj te arkitektures RISC (reduced instruction set architecture) per shkak se ka shume pak instruksion dhe sipas perkufizimit sa me pak instruksione aq me i shpejt eshte nje proçesor.

RI = Register File , ne shqip faili i regjistrave te sistemit eshte nje komponent elektrik per ruajtjen e te dhenave i ndertuar ne proçesor qe perdoret per veprimet e ndryshme te proçesorit gjat cikleve te tij.

RI ne MIPS eshte i perbere nga 32 rregjistra dhe secili nga keto rregjistra ka kapacitetin qe te ruaj 32 bit informacion te koduar ne numer binar. Keshtu qe ne total 32 rregjistra X 32 bit qe ka kapacitet secili atehere kemi 1024 bit memorje ne dispozicion.

Ja pamja e thjeshtuar e RF

Ne arkitekturen MIPS,  kemi perkufizimin qe ne situata te veçanta perdoren rregjistra te veçant, dhe kjo sepse rregjistrat kane funksione te veçanta.

Le ti shohim scecilin nga ata se ç’fare funksionesh kane, ne rradhe te pare themi se ç’do instruksion ne assembly te arkitektures mips ne pergjithesi vepron duke perdorur nje nga rregijstrat e sistemit dhe kemi dhe sintaksen psh:

add $v1, $s1, $s2  #qe ne pseudoinstruksion eshte ekuivalente me $v1 = $s1 + $s2

E ne shqip do te thote merr bitet qe jane ne rregjistrin $s1 dhe mblidhi me ato qe jane ne rregjistrin $s2 dhe shumen depozitoje ne rregjistrin $v1

Kjo ne fjale te tjera eshte gjuha assembly qe me sintaksen e saj vepron direkt me proçesorin ose me memorjen {ne rastin Mips kur perdorim komanen li (load immediate) } , add normalisht nuk njihet nga proçesori por njihet ekuivalentja e saj ne MIPS ISA dhe kjo enkodohet ne kod binar i cili eshte ekuivalent per ate instruksion te caktuar , perfaqesimin ne haxadecimal (0x) te atij kodi binar qe per arkitekturen do te thote “mblidh” do e quajm opcode ose operation code qe do te thote kodi operacional nese mund ta themi keshtu, pra eshte kod i cili i thote proçesorit te kryej nje veprim te caktuar e ne aspektin gjuhesor eshte ‘folja’ e cila tregon levizje apo nje veprim specifik.

Grupet e Rregjistrave

Siç e shohim ne figuren me siper, rregjistrat fillojn te gjith me $, dhe emertohen me emra te ndryshem , fillojm ti sqarojm 1 nga 1 ne baze grupi.

$zero / ky eshte nje rregjister qe qendron gjithmon 0 , pra eshte konstant dhe per ata te çmendur [ 😀 ] qe kane provuar ti japin nje vlere do te shohin qe eshte e pamundur pasi eshte i ndertuar ne hardware. E thene midis nesh (kush perdor linux) nje /dev/null

$at / ose assembler temporary , eshte i rezevuar nga assembleri (kompilatori assembler) dhe mban vlera te perkohshme te makro instruksioneve , ose pseudo instruksioneve.

$v / ose rregjistrat e vlerave, perdoren per te kthyer vlera nga funksionet, dhe gjen zbatim ne IO , ne rastet kur perdoret “syscall” per te kryer nje sherbim te caktuar dhe programatoret kane caktuar 10 sherbime te mundshme duke karikuar tek $v0 vlera nga 1 tek 10 ku secila nga keto ka nje funksion te caktuar psh nese perdorim komanden li $v0, 4 ku ne fjale te tjera karikojm ne rregjistrin $v0 vleren 4 sipas perkufizimit kodi 4 do te thote Print String, e kodi 5 Read Integer, kodi 1 eshte Print Integer e keshtu me rradhe.

$a / Regjistrat e argumenteve – qe jane shume te lidhur me rregjistrat me siper pasi $v ishte per te kthyer vlera nga funksionet kurse $a si grup perdoren per te kaluar vlera tek funksionet e le te shohim nje rast ku kombinohen te dy: li $v0 4 # thirrja e sistemit per te printuar string (tog fialesh) la $a0 , prsh # i themi load address te mesazhit prsh tek rregjistri a0 dhe prsh neve psh mund ta kemi percaktuar tek .data si prsh: .ascizz “n Pershendetjeeeee!! ”

$t / Rregjistrat temporan – jane rregjistra qe perdoren nga kompilatori assembler ose nga programatori (ne) per te magazinuar vlera te menjehershme e zakonisht jane rregjistrat qe perdoren me shume nga komanda li (load immediate).

$s / Regjistrat temporan te shpetuar – keto jane te ngjashem me me $t me ndryshimin qe vlera mbetet dhe perdoren per te magazinuar vlera akoma me te gjata. (zakonisht kur kemi te bejm me instruksione andi , addi, or, srl etj..

$k / Regjistrat e Kernelit – keto jane regjistra te rezervuar nga kerneli, pra zemra e sistemit operativ dhe nuk mund te perdoren modifikohen nga programatori.

$gp / Global Pointer – shenohet adres qe piketon piken globale ne memorje (do i shohim nese do kemi mundesi te shpjegojm memorjen RAM)

$sp / Stack Pointer – piketon adresen ne te cilen gjate egzekutimit te programit ndodhet stack-u

$fp / Frame Pointer – edhe ky nje rregjister qe vepron me memorjen ku vlera e tij tregon lokacionin e memorjes ne te vilen ndodhet frame. (Do e shohim me ne detaj tek shpjegimi i RAM-it)

$ra / Return Address – regjistri i adreses se kthimit apo pika e kthimit, perdoret per ti thene nje funksioni se ku duhet te kthete (gjithmon ne memorje) gjate egzekutimit te programit.

“magji” me konvertimet komplement te dyshit ;)

Kete nuk e gjeni ne manualet e universitetit keshtu qe vemendjen ne mesim 😀

Mund te kthejm me kete rregull shume leht numra komplementar te dyshit pa hasur veshtiresi dhe ne nje menyre shume te shpejte. psh marrim numrin 01001100 Rregulli eshte :

“Fillojm te shohim numrin nga e djathta ne te majte, dhe ndalojm tek 1-shi i pare, dhe e shkruajm ashtu siç eshte se bashku me zerot qe jane mbas tij, nderkohe qe pjesen tjeter e ndryshojm”

01001100 mbajm ashtu si jane 100 pasi eshte 1-shi i fundit dhe zerot, pjesen tjeter e ndryshojm

10110 – 100 Pra siç e pame u ndryshuan te gjith perveç 1shit te fundit ose te parit nese fillojm nga e djathta ne te majte dhe 0rove qe ka mbrapa.

Bejm konvertime te tjera ne seri, 10000001 del 01111111 (1shi i fundit i pandryshuar)

11111111 = 00000001 (1shi i fundit i pandryshuar)

01011010 = 10100110 (1shi i fundit i pandryshuar dhe ato 0 qe vijn mbas tij)

10000000 = 10000000 [e ky eshte nje rast shume i veçant qe u zbulua tani :D, pra forma e numrit ne binar eshte i njejte]

Hajt ta gezojm 😉

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 :)

Ubuntu ne Windows

Besoj se tani nuk ka me arsye njeri te thote qe nuk mund ta fshij windows pasi kam pune me te dhe te instaloj nje linux. Pasi kam gjetur nje linux qe hapet mbi windows dhe nje distro goxha te mire do te thosha, si eshte ubuntu. Parimi i punes eshte si nje virtual machine por qe punon ne menyre me fleksibel pasi punon si nje aplikacion i zakonshem dhe nuk merr shum memorie per te punuar.  Ky sistem mund te punoj ne platforma si XP dhe Windows Vista. Pra per tju a bere me te qarte ne koken e desktopit tuaj shfaqet nje menu si ajo e startit te windowsit e cila te jep aplikacionet e nje sistemi ubuntu, te jep nje buton per networkun dhe nje per sistemin, gjithashtu gjendet nje browser Mozilla. Sistemi punon me nje gnome dhe me nje kernel 2.6.22.18.

Ja disa pamje:

Pra funksionon si te gjitha programet e tjera ne windows.

Nese shkoni tek System > Administration > Synaptic Package Manager  dhe aty pasta zgjidhni Not Installed dhe mund te shihni se sa aplikacione pa fund mund te shkarkoni nga interneti. Kete mund ta hapni edhe nepermjet terminalit duke shkruajtur synaptic. User pubuntu ka password 123456  per ta ndryshuar eshte e thjeshte gjithsesi po e jap per ato qe nuk kane ekperience ne linux:passwd pubuntu dhe pas se te jepni enter do tju kerkoj futjet e passwordit te ri e thjesht ee. Shpresoj se do te tju ndihmoj shum dhe do te kenaqeni me linux 😀

Dhe me e bukura eshte qe e gjitha kjo eshte falas dhe mund ta shkarkoni ketu:

http://portableubuntu.demonccc.com.ar/

Kompiuteri me i mire

KOMPIUTERI ME I MIRE?

ç’fare te blej, :S  Sony vaio, Dell, Asus, Hp, MacBook cili eshte me i miri :S

hahahaha

Pyetje tipike apo jo, ok ne kete teme po perpiqem te jap opinion personal keshtu qe mos me gjuni me domate 😛

Per mendimin tim, kompiuteri i mire ndahet ne Hardware te mire dhe Software te mire. Meqenese kjo teme eshte e dedikuar mases ne pergjithesi po e nisim me Hardware.

E para, mos shikoni markat, eshte rregulli i pare qe me vjen ne mendje sepse si Asus, si HP, si Packard Bell, si Dell, si Sony etj jane e njejta gje. Kete e them me siguri te plote pasi komponentet hardware qe montojn jane te te njejtave kompani, si Intel, Nvidia, SATA, ATI, e keshtu me rradhe keshtu qe mos i konsideroni shume rendesi se ç’fare marke po e merrni, normalisht as marka qe jane shume pak eksperte ne fush nuk keshillohen (fujitsu siemens, toshiba, etc)

Jeni gati per te marre kompiuterin e enderrave ? Ok, rregulli i dyte eshte qe jo gjithmon ai kompiuter qe ka proçesorin me te fuqishem eshte me i miri sepse mbase nuk ka Memorien RAM po aq te shpejt, ose njesi te tjera hardware qe ti pergjigjen shpejtesise se tij, dhe keshtu gjigandet e kompiuterave shesin sot kompiuterat e tyre duke futur nje komponent “qe te merr ne qaf” dhe duke shitur te tjeret qe jane me targa VL (vlor :D). Dhe keta zakonisht jane kompiutera ne ofert, apo kompiutera me çmim shume te ulet.

Persa i perket ne te informatikes pergjigjem menjehere qe kompiuteri me i mire eshte ai i cili e ke ndertuar vet dhe tek kjo nuk ka dyshim pasi i zgjedh vet te gjitha pjeset dhe nderton ate qe ta ka qejfi.

RRegulli numer 3, STOP MANIS te te pasurit ramin me te madh proçesorin me te fuqishem etj, sepse ndodh shume shpesh qe pikerisht nje kompiuter te kete 4 GB RAM, 3Ghz Dual Core 2 Duo Proçesor dhe te jete me i ngadalt se nje tjeter me 2 gb ram dhe me 2Ghz proçesor, si eshte e mundur?

Eshte e mundur sepse nuk jane kombinuar mire komponentet hardware, psh mund te jete veretet RAM i serise se fundit me nje shpejtesi te madhe, si dhe proçesori qe egzekuton ne nje shpejtesi te ngjashme por kemi nje BUS te ngadalt, keshtu qe nga kjo nxjerrim qe nuk eshte e rendesishme shume qe te kemi maksimumin nga hardware 1 nga 1 se sdo nisim space shattle per ne mars, e rendesishme eshte qe keto komponent hardware te kene shpejtesi te ngjashme dhe keshtu e zgjidhem dhe kete problem.

Pra, laptopi me i mire eshte nje laptop i kalibruar mire, me nje motherbord te mire dhe komponent te nje shpejtesie te ngjashme.

Po ua le juve ne dore se ç’fare kase te zgjidhni sepse dijeni me siguri qe pak a shume ne fund te fundit midis kompiuterave qe lexoni marken siper, nuk leviz ndonje gje kushedi se ç’fare perveç kasave dhe te shkruajturit siper HP ose ASUS, ose diçka tjeter.

Ne fillim thame qe nje kompiuter i mire meriton dhe nje Software (Sistem operativ) te mire dhe nese jeni duk e mendura per windows, dijeni se jeni duke shkaterruar dhe duke shfrytezuar djersen tuaj (qe blet kompiuterin perveç nqs jeni politikan, e sua u ndien shum :D) dhe po e hidhni ate dem.

Do te keshilloja nje Distribucion Linux, dhe te mblidhni mendjen nga formatimet, viruset, axhornimet kritike, etj etj …..vazhdon…..

Keshtu qe, une personalisht per veten time (kjo nuk eshte per perdorues te thjesht) do te preferoja nje laptop Mac Book dhe nje kompiuter fiks te ndertuar nga une me te instaluar siper slackware (nese do te studioj assembly dhe arkitekturen e kompiuterit) ose Fedora, ose Debian nese do te merrem me programim ne pergjithesi.

Besoj se tani te pakten i keni disa ide te mira te cilat mund te jene baze per tju orientuar :)

Privacy… nuk ka me :(

Duke lundruar ne internet ne kompjuterin tim shum here me shqetesonte nje ip e klasit A e cila vazhdimisht krijonte sulme dhe ativirusi im e jepte si nje sulm. Keshtu e marr ate ip dhe i bej nje trace dhe shoh qe perfundon tek IANA nje shoqeri qe merret me regjistrimin e domainave te pakten kshu thot zyrtarisht dhe merret me sakte me kordinimin e ip ne internet. E cuditcme !!! Une se kisha degjuar po ju? Atehere kjo kompani qe u merrka me “kordinimin e internetit” ci duhet me ip time dinamike e cila eshte personale dhe qe nuk jep as ndonje sherbim web, pra nuk ke se cfar te kordinosh ketu. Mendimi eshte se nje network i tille merret me regjistrimin e ip dhe ndoshta dhe me ndonje forme spam apo pse jo dhe pergjimi. Une si individ dhe te gjith ju kemi te drejte te privacy-se tone dhe ne asnje network apo asnje organizate e tille nuk ka te drejte te regjistroj ip time dhe te degjoj paketat e internetit te mija. E dyta eshte se ky kontroll eshte mjaft invaziv pasi ngadelson internetin tim duke me bombarduar  me paketa here pas here. Pra edhe ne internet individi tani nuk mund te kete me anonimitetin e tij. Pres mendimet e juaja per kete teme