Permalänk
Medlem

division i assmebler

om man ska räkna ut 19/2 i assembler så ska man skifta 13 ett steg åt höger. Resultatet blir 9 hex. 9 hex i decimaltal är 9. Men 19/2 är ju 9,5. Varför blir det så?

Permalänk
Medlem

är det så att man behöver ändra så att det blir 19,0/2,0.

ska man då först omvandla 19,0 till ett binärt flyttal och sedan det binära flyttalet till ett hexadecimalt tal.

Permalänk
Hedersmedlem

Ja du måste hantera det som ett flyttal såklart.

Permalänk
Medlem

Heltal har inga decimaler utan avrundas mot 0 vid division. x/y där y är 2^n kan kodas som x>>n, dock blir avrundningen mot -infinity istället för 0 så för negativa tal är inte resultatet identiskt. Division med en konstant kan normalt sett förenklas till multiply+shift (+add om det är signed) istället.

Divison är väldigt långsamt och något man vill undvika i största möjliga mån i prestandakritiska applikationer (vilket man kan förutsätta om man skriver assembly, annars finns det ingen större mening med det). Måste man utföra en flyttalsdivision där resultatet inte behöver vara helt exakt är det att föredra att använda Newton-Rhapsons metod för att estimera reciproken och sedan multiplicera med den vilket har ungefär hälften så lång latency som en äkta flyttalsdivison samt dubbel eller tredubbel throughput.

Visa signatur

Assembly är ett högnivåspråk.

Permalänk
Medlem
Skrivet av Gramner:

Heltal har inga decimaler utan avrundas mot 0 vid division.

Bara för att vara lite petiga, har väl brist på annat att göra en fredagskväll. Inget avrundas, den kapar bara bort allt efter decimalen.

Visa signatur

In order to understand recursion, one must first understand recursion

Permalänk
Medlem
Skrivet av pkzlol:

Bara för att vara lite petiga, har väl brist på annat att göra en fredagskväll. Inget avrundas, den kapar bara bort allt efter decimalen.

Fast effekten blir ju samma (avrundning mot noll)

Visa signatur

Kom-pa-TI-bilitet

Permalänk
Medlem
Skrivet av Teknocide:

Fast effekten blir ju samma (avrundning mot noll)

yesbox det stämmer det var därför jag inkluderade ordet "petig"

Visa signatur

In order to understand recursion, one must first understand recursion