Nostralgía fyrir forritara
Man einhver eftir því þegar maður þurfti allaf að vera að nota stack? Það var svo mikið pain in the butt að þurfa að vera að sóa dýrmætum clockcycles í að geyma registera þegar maður opnaði interrupt.
- movem.l d0-d1/a0-a1,-(sp)
- ..gera eitthvað shit við registerana…
- movem.l (sp)+,d0-d1/a0-a1
- rts
Þetta var auðvitað svo fáránleg eyðsla á processortime að maður gerði þetta aldrei. Ef maður var að forrita demo eða intro var maður hvort sem er að optimæza kóðann niður í zen útgáfur sem gátu fært fjöll með einum register á 8 raster línum. Þá var betra að nota bara efstu registera (td. A5-6/D5-6 á m68000) í interrupts á láta þá svo óhreyfða annarstaðar (nema kannski í VBL).
Það er engin þörf á því að nota stack þegar maður er að skrifa lítil assembler forrit sem keyra óháð stýrikerfinu. Það var auðvitað bónusinn við að vera að forrita á vélamáli í gamla daga að maður gat skrifað forrit sem keyrðu _algjörlega_ óháð stýrikerfinu.
Á Atari ST tölvunum var þetta algjör draumur því að kerfið var á ROM og maður gat nánast þurrkað RAM algerlega en samt kallað í sectorloader og önnur kerfisföll (sem sáu sjálf um að ýta registerum á stack). Auðvitað skrifaði maður samt bara sinn eigin loader samt - þannig fékk maður meiri hraða út úr dósinni. =)
Ah, í þá gömlu góðu daga. Ég verð hissa ef fleiri en einn lesandi minn skilur neitt af þessu. Rétt upp hönd sem skilja! ;-)

8 ummææli við “Nostralgía fyrir forritara”
Hönd! Ég forritaði reyndar aldrei assembler á neinu nema x86, eða jú, reyndar smá PA-RISC uppí Háskóla. En hugtökin eru allstaðar eins. Þetta var nokkuð skemmtileg sport. Nú eru nokkur ár síðan ég hef forritað staf í assembler, en maður býr alltaf að þessu, mér finnst það oft gagnlegt.
Það eru margir forritarar í dag sem hafa ekki skilning á því hvað gerist á vélbúnaðarlaginu þegar þeir gefa einhverja skipun í PHP eða Java eða Perl... en ef maður hefur forritað assembler þá getur maður oft getið sér til um það. Þessi dýpri skilningur kemur merkilega oft að gagni.
Bjarni Nörd skrifaði 24.10.2003 11:41
Sammála, enda er mikið af þessum grunni kenndur í háskólunum (afaik). Ég sá fyrir mörgum mánuðum einhverja HR nema vera að væla yfir að það væri erfitt að skilja stack konseftið. Það kemur mér svosem ekkert á óvart að einhver sem er bara búinn að vera að læra OOP í mörg ár klóri sér í hausnum yfir svona.
Samt gott að hafa gert þetta. Þetta skilur eftir sig allskonar trix sem maður kynni annars ekki - enda rifjaðist þetta upp fyrir mér þegar ég var að nota eitt slíkt ;-)
Borgar skrifaði 24.10.2003 12:22
Hönd. Hún fer ekki mjög hátt, nógu hátt til að allir haldi að ég sé geðveikt klár, en ekki svo hátt að ég verði spurður einhverra of óþægilegra spurninga. Það sem ég lærði af forritun í rafeindavirkjanum í Iðnó var mest allt assembler, var einmitt að forrita x86 með vélamáli, ásamt litlum iðntölvum eins og basic stamp og þess háttar. Svo lærðum við líka eitthvað um skipanasettið í Zilog Z80 (sem var einmitt örgjörvinn í Sinclair Spectrum fyrir þá sem hafa áhuga á svoleiðis) án þess að hafa eitthvað forritað fyrir hann.
Ingo skrifaði 25.10.2003 9:01
Man þú ert skemmdur !
en að kóða í Assembler ;)
Mr Burger King !
Haffi skrifaði 26.10.2003 18:40
Úps Gleymdi
/me Hönd!!!
Haffi skrifaði 26.10.2003 18:41
farðu að skrifa :)
Helga skrifaði 3.11.2003 2:29
Mín hönd er sambærileg við Ingósar hönd. Nema actual reynslan.
Krilli skrifaði 7.11.2003 12:58
Hönd. Hef að vísu ekki gert mikið meira en að lesa ýmislegt um þetta. Sérstaklega í gamla daga þegar maður átti Sinclair Spectrum.
SiggiSveinn skrifaði 9.12.2003 2:08