jonny Skrevet 3. oktober 2012 Del Skrevet 3. oktober 2012 (endret) Jeg fikk ikke koden til Paull til å gjøre roteringa raskere på min prosessor, men benyttet meg av hans idé om å bruke en 16-bits lookup-table med følgende kode: void stringRotation2(unsigned char *text, int len) { int align_offset = (unsigned long)text % UL_SIZE; int i = 0; if (align_offset &--#62; 0) { for (; i &--#60; UL_SIZE - align_offset; i++) { int tmp = text[i]; text[i] = lookup[tmp]; } } if (UL_SIZE == 8) { for (; i &--#60;= len - UL_SIZE; i += UL_SIZE) { unsigned long *bytesPtr = (unsigned long *)&text[i]; unsigned long oldval = *bytesPtr; unsigned long newval = lookups[oldval & 0xffff]; oldval &--#62;&--#62;= 16; newval |= (unsigned long)(lookups[oldval & 0xffff]) &--#60;&--#60; 16; oldval &--#62;&--#62;= 16; newval |= (unsigned long)(lookups[oldval & 0xffff]) &--#60;&--#60; 32; oldval &--#62;&--#62;= 16; newval |= (unsigned long)(lookups[oldval & 0xffff]) &--#60;&--#60; 48; *bytesPtr = newval; } } else if (UL_SIZE == 4) { for (; i &--#60;= len - UL_SIZE; i += UL_SIZE) { unsigned long *bytesPtr = (unsigned long *)&text[i]; unsigned long oldval = *bytesPtr; unsigned long newval = lookups[oldval & 0xffff]; oldval &--#62;&--#62;= 16; newval |= (unsigned long)(lookups[oldval & 0xffff]) &--#60;&--#60; 16; *bytesPtr = newval; } } for (; i &--#60; len; i++) { int tmp = text[i]; text[i] = lookup[tmp]; } } Denne funksjonen blir ferdig ila. 60 ms på min prosessor (lookups er 16-bit-lookup-tabellen). Jeg hadde lyst til å prøve å lage en versjon av stringRotation-metoden der jeg bruker inline assembler, og fikk det til etter en del knoting (jeg kan absolutt ikke assembly, noe som sikkert kommer tydelig frem av koden nedenfor). Hadde vært artig med noen tilbakemeldinger om de groveste feilene/dumhetene. static void stringRotationASM(unsigned char *text, const int len) { asm("\tmovq $0,%%rbx\n" "\tmovq %0,%%rdx\n" "1:\n" "\tcmp $0,%1\n" "\tjz 2f\n" "\tmovq (%0),%%rax\n" "\tmovq %%rax,%%rbx\n" "\tand $0xff,%%rbx\n" "\tmovb (%2,%%rbx,1),%%al\n" "\trol $8,%%rax\n" "\tmovq %%rax,%%rbx\n" "\tand $0xff,%%rbx\n" "\tmovb (%2,%%rbx,1),%%al\n" "\trol $8,%%rax\n" "\tmovq %%rax,%%rbx\n" "\tand $0xff,%%rbx\n" "\tmovb (%2,%%rbx,1),%%al\n" "\trol $8,%%rax\n" "\tmovq %%rax,%%rbx\n" "\tand $0xff,%%rbx\n" "\tmovb (%2,%%rbx,1),%%al\n" "\trol $8,%%rax\n" "\tmovq %%rax,%%rbx\n" "\tand $0xff,%%rbx\n" "\tmovb (%2,%%rbx,1),%%al\n" "\trol $8,%%rax\n" "\tmovq %%rax,%%rbx\n" "\tand $0xff,%%rbx\n" "\tmovb (%2,%%rbx,1),%%al\n" "\trol $8,%%rax\n" "\tmovq %%rax,%%rbx\n" "\tand $0xff,%%rbx\n" "\tmovb (%2,%%rbx,1),%%al\n" "\trol $8,%%rax\n" "\tmovq %%rax,%%rbx\n" "\tand $0xff,%%rbx\n" "\tmovb (%2,%%rbx,1),%%al\n" "\trol $8,%%rax\n" "\tmovq %%rax,(%0)\n" "\tsub $8,%1\n" "\tadd $8,%0\n" "\tjmp 1b\n" "2:\n" "\tmovq %%rdx,%0\n" : /* output registers */ : "r" (text), "r" (len), "r" (lookup) /* input registers */ : "%rax","%rbx", "%rdx" /* clobbered registers */); } Hastigheten er slik: randomStrGen 69.40 megabytes/s (used 1440.88 ms) array copy 1.23 gigabytes/s (used 81.39 ms) stringRotationASM 482.39 megabytes/s (used 207.30 ms) stringRotation2 1.62 gigabytes/s (used 61.75 ms) Og, litt OT: Er det noe som helst logikk i hvordan mellomrom i CODE-blokker blir seende ut etter man har trykket "Lagre endringer" i redigeringsmodus? Utrolig irriterende... Endret 3. oktober 2012 av jonny Lenke til kommentar
LonelyMan Skrevet 3. oktober 2012 Del Skrevet 3. oktober 2012 Det er litt vanskelig å lese koden din her da det er så mange ekstra tegn innimellom og notasjonen er motsatt enn hva jeg er vant med. Men jeg kan gi deg noen tips. 1. Eliminer branches så ofte som mulig. branches er ekstremt kostbar for prosessoren. Fjern så mange jump instruksjoner som overhodet mulig, eventuelt erstatt de med cmov hvis det er mulig. 2. Pre-kalkuler konstanter som du gjenbruker flere plasser i en loop. Pre-kalkuler dem før du går inn i en loop og ha dem lagret i et register. Om du henter de inn fra minnet så vil du sannsynligvis få de fra l1 cache som tar 3 sykluser. Om du har de i et register så tar det 0.33 sykluser altså 9 ganger større throughput. 4. Unngå register stalling. Nå har de nyeste prosessorene register renaming men det hjelper ikke alltid. Register stalling kan gjøre at loopen kjører ekstremt mye tregere enn den kunne gjort. f.eks: mov rax,10 mov rcx,rax Her er et problem på register stalling. her vil rcx måtte vente til rax inneholder verdien 10 før programmet kan fortsette å kjøre. I prosessoren så er det ikke oppkoder eller mnemonics som gjelder, der er det mikrooperasjoner som gjelder. Hver instruksjon består av en eller flere mikrooperasjoner. Dvs, du kan kjøre flere instruksjoner samtidig i prosessoren i de forskjellige pipelinene. For å unngå register stalling i eksemplet over så kan du omorganisere instruksjonene slik at prosessoren kan konsumere begge instruksjonene samtidig istedet for å vente til den første er ferdig. Om du gjør slik, så kan begge kjøre samtidig i prosessoren: mov rax,10 mov rcx,10 I det første eksemplet over så må rcx vente på at rax er ferdig. Det handler om å organisere instruksjonene slik at de kan deles opp i pipelinene. Resultatet er at programmet kan konsumere instruksjonene og kjøre de raskere. Det fins to typer paralell kjøring, den ene handler om å splitte kode over flere kjerner på prosessoren, den andre typen paralell kjøring handler om å organisere instruksjonene slik at de kjøres i par i prosessoren, 2 og 2 eller 4 og 4. Lenke til kommentar
LonelyMan Skrevet 6. oktober 2012 Del Skrevet 6. oktober 2012 En liten fire demo jeg har skrevet i assembler. Fire.zip Lenke til kommentar
Gjest Slettet+9871234 Skrevet 6. oktober 2012 Del Skrevet 6. oktober 2012 (endret) @LonelyMan - Meget bra post LonelyMan Hva med assembly på iPhone? Er det en mulighet? Hadde vært kult, ja ... Tviler litt, dog, da Apple trolig ikke vil slippe folk inn på for nært. Er det ikke slik at man ikke engang vet specs på den nyeste prosessoren de bruker? Det kan være riktig og Apple er svært strenge, men flere og flere plattformer kan tvinge frem mer åpenhet. Du og jeg har som forbrukere sterk makt. Ikke som enkeltpersoner, men som summen av alle forbrukere. Våre penger og kjøp snakker. Jeg blir liit overrasket om de ulike selskapene ikke publiserer manualer for prosessorens assembler instruksjoner. Intel gjorde alltid det den gangen jeg drev med assembly. Jeg har vurdert å se litt på assembly igjen. Jeg er spesielt interessert i 64 bits assembly, men assembly på en smart telefon hadde selvsagt også vært interessant. En time i uken kan være nok til å følge med på kode og etter hvert beherske assembly for 64 bist prosessoren. Er det noen som kjenner en god assemly bok / kild på Intel 64 bits prosessorer? Andre moderne prosessorer som litteratur om assembly på mobile plattformer er selvsagt også interessant. Følgende Amazon bok søk: assembly gir jo en god del treff på eldre literatur. Den nyeste The Art of Assembly Language er fra 2010. Jeg har nå tenkt litt mer på dette og om det er mulig å finne en mobil plattform hvor det følger med assembly manualer. Som økonom må man gjøre noen forutsetninger: At det er mulig. Hvis det er mulig, om det er verdt den tiden det tar å lære seg det ASM instruksjons settet og programmere i det. Derfor skrev jeg en kort artikkel og et innlegg på WebProWorld om det. (Innleggget på WPW ser ut til å ha fått stor oppmerksomhet på grunn av mangedoblet trafikk til det subrorumet jeg postet innlegget i). Her er lenkene: Assembly på mobile plattformer? Mobile application development in assembly Endret 6. oktober 2012 av Slettet+9871234 Lenke til kommentar
LonelyMan Skrevet 9. oktober 2012 Del Skrevet 9. oktober 2012 (endret) Laget noen maps til nibbles, he-he. Nibbles.rar Endret 10. oktober 2012 av LonelyMan Lenke til kommentar
jonny Skrevet 10. oktober 2012 Del Skrevet 10. oktober 2012 Kult. De 8-9 første brettene er hentet fra snake-spillet som fulgte med MS-DOS, ser jeg :-) Ser også at CPU-forbruket er redusert (kun én kjerne brukes 100% nå). Men ormen beveger seg fortsatt litt i rykk og napp (by-the-way, jukset ved å rename maps-filene, har ikke tålmodighet til å spille gjennom alle brettene). Lenke til kommentar
LonelyMan Skrevet 10. oktober 2012 Del Skrevet 10. oktober 2012 (endret) Jeg jukset på samme måten da jeg laget de for å få testet de Jeg har prøvd å kopiere mappene til dos-nibbles så godt som mulig, for de mappene der er jævli gode for å si det rett ut. Men jeg fant ikke alle. En gang så spilte jeg gjennom alle de, men da begynte jeg å gå lavt på liv, så jeg brukte en minneeditor for å cheate på mitt eget spill he-he. Vurderte om jeg skulle gjøre sånn at når man når 1000 poeng kan man "kjøpe" en speed-slower ved å trykke space, så halverer hastigheten gjennom resten av mappet, men det koster 1000 poeng. Eventuelt implementere et maskingevær som koster 1500 poeng, så kan du skyte vekk biter av en vegg. Lagt ved map konvertereren. def.bmp er malen og 1.bmp er en demonstrasjon av et map. Jeg har ikke lagt inn muligheten for å name mappene enda, så de lagres foreløpig bare som 1.map når man konverterer. Kan bare bruke ms paint for å lage maps. Lagt ved en moderert nibbles om 100% cpu aktivitet er et problem. MapConverter.rar Nibbles.rar Endret 10. oktober 2012 av LonelyMan Lenke til kommentar
LonelyMan Skrevet 10. oktober 2012 Del Skrevet 10. oktober 2012 Jeg har tidligere laget et klassisk spill i assembler og direct3d9, missile command. Det klassiske atari spillet hvor du skyter ned raketter. Du har sikkert sett den gutten i terminator 2 filmen hvor han spilte missile command. Jeg laget det prikk likt, selv den blinkende cursoren var lik, men jeg fullførte det ikke fordi jeg orket ikke. Så har jeg også laget atari spillet breakout, ganske likt det originale, der laget jeg scanline effekt slik at det så ut som du spilte på tv skjermen, men det kodet jeg i delphi. Så har jeg også laget snake i direct3d i delphi. Jeg har laget noen klassiske spill opp over tiden, selv om de er små så er det en del kompleksitet i det. Jeg har lyst til å lage noe mer avansert men jeg vet at det ikke lar seg gjøre når man bare er en person så jeg orker rett og slett ikke. Jeg har erfaring med direct3d og directsound i assembler og har skrevet biblioteker for de, men å lage komplekse spill krever mye mer enn det, der skal man implementere mulighet for å scripte unitene, man må ha en map editor, man skal ha AI, pathfinding (pathfinding har jeg studert endel og kan endel om det), og så skal man ha 3d modeller av unitene, teksturer osv. Det blir rett og slett for mye for en enkelt person. Men tidsmessig så tror jeg ikke assembler er noen hindring der, bare planen er der så vil ikke det bli noe tidsmessig problem, programmeringsmessig. Lenke til kommentar
jonny Skrevet 10. oktober 2012 Del Skrevet 10. oktober 2012 Når det gjelder assembler-programmering, så er jo dette ganske imponerende: http://menuetos.net/ Lenke til kommentar
LonelyMan Skrevet 10. oktober 2012 Del Skrevet 10. oktober 2012 (endret) Ja Det som er fint med fasm er at det er laget for stort sett alle OS, inkludert Menuet. Det er skrevet i fasm som du ser. Der er mange flere OS som er skrevete i assembler. Fasm er så sinnsykt fleksibelt, det er ingenting man ikke kan gjøre i det. Du kan bygge ditt eget høynivåspråk i det om du så ønsker, og det er faktisk blitt gjort også. Du kan strekke det til det uendelige. F.eks om du vil ha ansi programmet ditt til å bli unicode, så bytter du bare om include filen win32a med win32w (eventuelt win64a og win64w) og dermed er det gjort, ingenting mer behøves. Makroene er bygd for å svitsje mellom ansi og unicode. Endret 10. oktober 2012 av LonelyMan Lenke til kommentar
LonelyMan Skrevet 18. oktober 2012 Del Skrevet 18. oktober 2012 (endret) Jeg har tidligere laget 4 irc klienter, 3 av dem skrevet i høynivåspråk og sistnevnte i assembler, det var mye arbeid. Nå har jeg laget en peer to peer chat klient i assembler som er endel simplere enn irc klienter. Om noen vil teste så kan de sende meg en pm så utveksler vi ip adresser og tester ut. Om det er behov for å kompilere programmet selv så kan jeg godt sende kildekoden så kan du kompilere programmet selv om du vil. Programmet er vedlagt. Endret litt på programmet. Nye ting: F11 = Fullskjerm/Normalt vindu ESC=Avslutt programmet (advarselspopup hvis chattingen pågår) Chattingen blir ciphret med rot13 (implementere RSA senere med primtall og sertifikater) Chat.rar Endret 20. oktober 2012 av LonelyMan Lenke til kommentar
LonelyMan Skrevet 30. november 2012 Del Skrevet 30. november 2012 (endret) Et lite cube eksempel jeg har laget i assembler og Direct3D. Bare et raskt og spesifikt eksempel, jeg har ikke kodet inn noe dx-feilsjekking enda og jeg antar støtte for 75 Hz på 1024x768. Jeg har ikke lagt inn mip mapping og anti aliasing enda, eller jeg hadde det men fjernet det siden jeg ikke har feilsjekking enda så kan jeg ikke anta at alle som laster dette ned har det. 3DKube.zip Endret 1. desember 2012 av LonelyMan Lenke til kommentar
LonelyMan Skrevet 30. november 2012 Del Skrevet 30. november 2012 (endret) Roterende korridor. Korridor.zip Endret 30. november 2012 av LonelyMan Lenke til kommentar
Gjest Slettet+9871234 Skrevet 1. desember 2012 Del Skrevet 1. desember 2012 Skriv en bok. Lenke til kommentar
LonelyMan Skrevet 2. desember 2012 Del Skrevet 2. desember 2012 (endret) hehe, takk for komplimentet. Man behøver ikke være et geni for å få til litt Direct3D Det er ganske simpelt egentlig. Jeg har nå lagt inn feilsjekking i kube eksemplet jeg laget, nå auto gjenkjenner programmet oppløsningen på maskina som har best refreshrate og høyest oppløsning med den refreshraten. 3DKube.zip Endret 2. desember 2012 av LonelyMan Lenke til kommentar
Gjest Slettet+9871234 Skrevet 2. desember 2012 Del Skrevet 2. desember 2012 Men man trenger heller ikke være geni for å skrive en bok. Utlendinger skriver IT bøker over en lav sko. Jeg finner mer kunnskap i bøker enn å snakke med folk. Jeg vet ikke om dette ordet finnes (i forkorting). DIKT = Data(logistikk) Informasjons(logistikk) Kommunikasjons(logistikk) Teknologi(logistikk) De fleste snakker om IKT men ikke om Data i den ene eller andre for. I en viss forstand er det som skrives i denne tråden data, sosialt digitale data. Før jeg leste denne posten, kan jeg opplyse deg om at jeg akkurat handler bøker for over 3000 kroner om IT og Økonomi på Amazon. Her Her er listen: Delivery estimate: Dec. 24, 2012 1 "The Return of Depression Economics and the Crisis of 2008" Krugman, Paul; Paperback; $11.53 In Stock Sold by: Amazon.com LLC Gift wrap: yes Gift note: 1 "Automate This: How Algorithms Came to Rule Our World" Steiner, Christopher; Hardcover; $14.91 In Stock Sold by: Amazon.com LLC Gift wrap: yes Gift note: 1 "Bureaucracy" Von Mises, Ludwig; Paperback; $13.20 In Stock Sold by: Amazon.com LLC Gift wrap: yes Gift note: 2 "Thinking Statistically" Bram, Uri; Paperback; $4.99 In Stock Sold by: Amazon.com LLC Gift wrap: yes Gift note: 1 "Natural Capitalism: Creating the Next Industrial Revolution" Lovins, L. Hunter; Paperback; $7.60 In Stock Sold by: Amazon.com LLC Gift wrap: yes Gift note: 1 "Unleashing the Power of IT: Bringing People, Business, and Technology Together (Wiley CIO)" Roberts, Dan; Hardcover; $29.85 In Stock Sold by: Amazon.com LLC Gift wrap: yes Gift note: 1 "Taming The Big Data Tidal Wave: Finding Opportunities in Huge Data Streams with Advanced Analytics (Wiley and SAS Business Series)" Franks, Bill; Hardcover; $29.47 In Stock Sold by: Amazon.com LLC Gift wrap: yes Gift note: 1 "Making Games with Python & Pygame" Sweigart, Al; Paperback; $22.50 In Stock Sold by: Amazon.com LLC Gift wrap: yes Gift note: 1 "Simple Numbers, Straight Talk, Big Profits!: 4 Keys to Unlock Your Business Potential" Greg Crabtree; Hardcover; $14.71 In Stock Sold by: Amazon.com LLC Gift wrap: yes Gift note: 1 "Big Data Analytics: Turning Big Data into Big Money (Wiley and SAS Business Series)" Ohlhorst, Frank J.; Hardcover; $30.38 In Stock Sold by: Amazon.com LLC Gift wrap: yes Gift note: 1 "Irrational Exuberance: (Second Edition)" Shiller, Robert J.; Hardcover; $25.97 In Stock Sold by: Amazon.com LLC Gift wrap: yes Gift note: 1 "Race Against the Machine: How the Digital Revolution is Accelerating Innovation, Driving Productivity, and Irreversibly Transforming Employment and th" Erik Brynjolfsson; Paperback; $14.99 In Stock Sold by: Amazon.com LLC Gift wrap: yes Gift note: 1 "End This Depression Now!" Krugman, Paul; Hardcover; $14.71 In Stock Sold by: Amazon.com LLC Gift wrap: yes Gift note: 1 "How to Lie with Statistics" Huff, Darrell; Paperback; $6.49 In Stock Sold by: Amazon.com LLC Gift wrap: yes Gift note: 1 "Ownership Thinking: How to End Entitlement and Create a Culture of Accountability, Purpose, and Profit" Hams, Brad; Hardcover; $16.39 In Stock Sold by: Amazon.com LLC Gift wrap: yes Gift note: 1 "Trillions: Thriving in the Emerging Information Ecology" Lucas, Peter; Hardcover; $20.29 In Stock Sold by: Amazon.com LLC Gift wrap: yes Gift note: 1 "Cloudonomics, + Website: The Business Value of Cloud Computing" Weinman, Joe; Hardcover; $37.80 In Stock Sold by: Amazon.com LLC Gift wrap: yes Gift note: Delivery estimate: Jan. 11, 2013 - Feb. 1, 2013 1 "Python for Kids: A Playful Introduction to Programming" Briggs, Jason R.; Paperback; $18.43 Available for Pre-order Sold by: Amazon.com LLC Gift wrap: yes Gift note: Because of Pre-order Price Guarantee, you might pay less. Why? Delivery estimate: Jan. 25, 2013 - Feb. 11, 2013 1 "Regenesis: How Synthetic Biology Will Reinvent Nature and Ourselves" Church, George M.; Hardcover; $18.48 Usually ships in 1 to 3 weeks Sold by: Amazon.com LLC Gift wrap: yes Gift note: 1 "The Third Industrial Revolution: How Lateral Power Is Transforming Energy, the Economy, and the World" Rifkin, Jeremy; Hardcover; $15.88 In Stock Sold by: Amazon.com LLC Gift wrap: yes Gift note: Order #2 : betterworldbooks_ Please note: Pre-order Price Guarantee covers one or more item(s) in this order. If the Amazon.com price decreases between your order time and the release date, you'll receive the lowest price. See details. Order #: 109-2405254-6080266 Shipping Method: Standard Shipping Items: NOK 29,00 Shipping & Handling: NOK 73,62 ------ Total before tax: NOK 102,62 Estimated tax to be collected:* USD 0.00 ------ Order Total: NOK 102,62 Delivery estimate: Jan. 3, 2013 - Feb. 4, 2013 1 "Map: A Market Anti-Inflation Plan" Lerner, Abba Ptachya; Paperback; $4.92 In Stock Sold by: betterworldbooks_ Lenke til kommentar
LonelyMan Skrevet 3. desember 2012 Del Skrevet 3. desember 2012 Ja det er en bit data i omtrent alt i naturen Du kan lagre binære data i en stein for eksempel. Alt i naturen fungerer som minne, men bare elektronisk minne er raskt nok til å kunne brukes effektivt i disse dager. Kartotek er fine greier, men de er dessverre utgått på dato Lenke til kommentar
LonelyMan Skrevet 3. desember 2012 Del Skrevet 3. desember 2012 Det er til og med data i en kopp kaffe. Av og til surrer innholdet i kaffen rundt og former spiraler av informasjon, mon tro hva hver spiral forsøker å fortelle. Lenke til kommentar
Gjest Slettet+9871234 Skrevet 3. desember 2012 Del Skrevet 3. desember 2012 (endret) Kartotek er fine greier, men de er dessverre utgått på dato Jeg hadde en lengre diskusjon med sønnen min i går om papir bøkene ovenfor som jeg hadde kjøpt. Han mente at jeg kunne ha kjøpt et nettbrett for pengene og lastet dem ned til det. Om jeg kjøper et nettbrett blir antagelig ikke det før Windows8 128 Gb nettbrett er tilgjengelige. Les mer her: http://www.dinitside...re-seg-til-fant Som regel lønner det seg også å vente noen år før slike nettbrett kommer. Jeg kjøpte nettopp en iPad mini til mitt barnebarn, så jeg holder meg oppdatert på det. Jeg glor nok i skjermer på Tv, og mine tre datamaskiner. Amazon kindle har jeg heller ikke investert i av lignende grunner. Papir kartoteker er muligens historie, men det er ikke papir bøker. Ihvertfall ikke for meg. Det er mye mer behagelig å sitte ute i solen å lese en bok uansett hvor mye min sønn babler om matte skjermer som nesten er som en bok. Bøker er de beste rådgivere og konsulenter. Ett avsnitt i en bok kan fort være verdt tusener. Det kan selvsakt også en video eller artikkel på nettet, men kjøper jeg en bok av en kjent forfatter borger det for en kvalitetssikring man ikke er sikker på er til sted på nettet. Mitt 2 øres råd. Endret 3. desember 2012 av Slettet+9871234 Lenke til kommentar
LonelyMan Skrevet 3. desember 2012 Del Skrevet 3. desember 2012 (endret) Bøker er fremdeles viktig, enig der. Virket den roterende korridoren på maskina di eller fikk du svart skjerm? Endret 3. desember 2012 av LonelyMan 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å