Re: C# forritun ToUpper vandræði
Sent: Þri 20. Mar 2012 17:25
Ástæðan er auðvitað vélamál og hönnum fyrstu örranna.
Þeir notuðu það sem kallað er Segment og offset register til að addressa minnin (vegna 8bita takmarkanna). Man einhver eftir þessari frægu setningu Bill Gates þegar blaðamenn spurðu hann undrandi, "Bill Gates, why limit the memory to 640kb?" Bill Gates: "640k!!! Who will ever need more!"
Ég erekki klár á hvort menn séu enn að barddúsa við slíkt með 64 bita register sem segir sig sjálft að er óþarfi.. en það er aldrei á vísan að róa.
Aftur í vélamálið.. þannig þegar cpu-inn þurfti að addressa array segjum á adressu 1024, þá settir þú 1024 í segment partinn og 0 í offset partinn. Síðan notaðir þú offset registerið sem index á arrayið, þess vegna var byrjað að nota 0 sem fyrsta stak. Segment og offset registerin óverlöppuðu hvort annað sem mér fannst alltaf skrítið og bjuggu þannig til 20 bita register í 16 bita örgjörvum osfv.
Þegar Turbo Pascal kom og Modula, þá fannst þeim það algjör óþarfi að styðja þetta bull í hærra level á forritun, enda mjög órökrétt að nota svona aðferðir við að telja og indexa.
Þýðandinn sá sjálfur um að hafa 1 sem fyrsta stak í Array og Strengjum þegar hann portaði yfir í vélamál. C forritunarmálin gerðu það ekki en því miður fyrir tölvuheiminn eins og hann leggur sig, þá var API forritað í C af M$, einhverjum stærsta og mesta vírus sem búinn hefur verið til frá upphafi.
Þeir notuðu það sem kallað er Segment og offset register til að addressa minnin (vegna 8bita takmarkanna). Man einhver eftir þessari frægu setningu Bill Gates þegar blaðamenn spurðu hann undrandi, "Bill Gates, why limit the memory to 640kb?" Bill Gates: "640k!!! Who will ever need more!"
Ég erekki klár á hvort menn séu enn að barddúsa við slíkt með 64 bita register sem segir sig sjálft að er óþarfi.. en það er aldrei á vísan að róa.
Aftur í vélamálið.. þannig þegar cpu-inn þurfti að addressa array segjum á adressu 1024, þá settir þú 1024 í segment partinn og 0 í offset partinn. Síðan notaðir þú offset registerið sem index á arrayið, þess vegna var byrjað að nota 0 sem fyrsta stak. Segment og offset registerin óverlöppuðu hvort annað sem mér fannst alltaf skrítið og bjuggu þannig til 20 bita register í 16 bita örgjörvum osfv.
Þegar Turbo Pascal kom og Modula, þá fannst þeim það algjör óþarfi að styðja þetta bull í hærra level á forritun, enda mjög órökrétt að nota svona aðferðir við að telja og indexa.
Þýðandinn sá sjálfur um að hafa 1 sem fyrsta stak í Array og Strengjum þegar hann portaði yfir í vélamál. C forritunarmálin gerðu það ekki en því miður fyrir tölvuheiminn eins og hann leggur sig, þá var API forritað í C af M$, einhverjum stærsta og mesta vírus sem búinn hefur verið til frá upphafi.