Citat:
Vi får nog skilja på basoperationer i processorn och vad ett program, dvs en lista av operationer, kan åstadkomma. Med basoperationer så avser jag de som på någon eller några cykler exekveras i ALUn och som är en del av processorns instruktionsuppsättning.okay, tack då förstår jag lite bättre..
men jag undrar också om "alla tillgängliga värdesiffror" tar mkt cpu-tid?
och tror du att en en procentuell överslagsräkning kan vara gångbart i indexerat färgschema?
eller finns det bättre sätt att optimera hur bits används?
men jag undrar också om "alla tillgängliga värdesiffror" tar mkt cpu-tid?
och tror du att en en procentuell överslagsräkning kan vara gångbart i indexerat färgschema?
eller finns det bättre sätt att optimera hur bits används?
Basoperationer
Beteendet hos i princip all digital elektronik är förutsägbar och kan närmast liknas en person med mycket starka tvångsbeteenden. Allting utförs på samma sätt utan någon form av lärande eller förenklande. Mönstret i kislet är detsamma och processorn kan inte ändra på detta utifrån lärande och erfarenhet. Beräkningar utförs i en ALU (Arithmetic Logic Unit). Till denna ALU finns 2 ingångar för data, minnesflaggor (Zero, Carry, Digit Carry etc) och val av instruktion (Add, Sub, Mul, Div, Rotate etc). Bredden, dvs antal bitar, på indata är oftast detsamma som för processorn (4, 8, 16, 32, 64..) men bredden på utdata kan variera. T ex ger 16x16 bitar ett resultat på 32 bitar, något som måste hanteras med mjukvara om bredden är bredare än det som processorn stödjer "native".
Ett program kan hantera mer komplexa beräkningar genom att kombinera flera basoperationer. På så sätt kan även en 8 bitarsprocessor hantera flyttal eller 32 bitarstal, dock tar det längre tid att utföra varje beräkning.
A+B (16+16) bitar i en 8 bitarsprocessor. high och low representerar de två bytes som ingår.
low(Result) = low(A) + low(B), overflow -> Carryflagga
high(Result) = high(A) + high(B) + Carryflagga