Gavekort Skrevet 15. november 2012 Del Skrevet 15. november 2012 Hei! *host host* *børste støv av kategorien* Jeg driver å programmerer Assembly i LC-3, som har et svært begrenset instruksjonssett. Jeg har nå sittet her, grublet og googlet på hvordan jeg kan dele noe på to uten å ha bit-shifting. Ganging er lett, for der er det bare å plusse på seg selv antallet ganger, men når det kommer til deling så får jeg vondt i hodet. Det er sikkert ikke noe vanskelig, men jeg klarer virkelig ikke å finne noen løsning til det. LC-3 sitt instruksjonssett: Lenke til kommentar
etse Skrevet 15. november 2012 Del Skrevet 15. november 2012 (endret) Med hvor stor nøyaktighet trenger du svaret? Og hvor viktig er ytelse? Det enkleste er nok å gå tilbake til barneskolematematikken å ta i bruk hvordan du regnet for hånd. Men om du kun trenger integer-divisjon uten noen desimaler kan du gjøre noe så enkelt som: (python-kode) Vil legge til at denne ikke er veldig effektiv om svaret er stort. def divide(a, b): answer = 0 while b <= a: answer += 1 a -= b return answer Endret 15. november 2012 av etse Lenke til kommentar
Lycantrophe Skrevet 15. november 2012 Del Skrevet 15. november 2012 (endret) Uten shifting er du vel låst til å kjøre gjentatt substraksjon til en condition treffer inn (altså du kommer under 0). Edit: Du kan også trikse litt med AND og få modulo. Kanskje til og med ta det derfra. Endret 15. november 2012 av Lycantrophe Lenke til kommentar
Gavekort Skrevet 15. november 2012 Forfatter Del Skrevet 15. november 2012 (endret) Jeg tror jeg har det nå. Jeg må bare lære meg litt conditions i LC-3 så skal jeg nok få det til. Så det vil bli noe slikt med 50/2: LD R0 x0032 ; DEC 50 LD R1 x0002 ; DEC 2 While R0 > 0{ NOT R1, R1 ; Flipp 2 ADD R0, R1, R0 ; Legg til flippet 2, altså trekk fra 2 ADD R3, R3, 1 ; Tell R3 opp som counter til svaret } Vet jeg må nok sjekke gjennom syntaksen, men ser det riktig ut? Endret 15. november 2012 av Gavekort Lenke til kommentar
Gavekort Skrevet 15. november 2012 Forfatter Del Skrevet 15. november 2012 Edit: Du kan også trikse litt med AND og få modulo. Kanskje til og med ta det derfra. Om du kan vise meg hvordan, eller henvise meg til en plass jeg kan lese om det så kan jeg gjerne gjøre det på den metoden også. Lenke til kommentar
Lycantrophe Skrevet 15. november 2012 Del Skrevet 15. november 2012 http://cs.smith.edu/~thiebaut/ArtOfAssembly/CH09/CH09-6.html#HEADING6-39 Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå