LonelyMan Skrevet 11. desember 2012 Del Skrevet 11. desember 2012 (endret) Et veldig lite eksempel på et flat assembler (FASM) program. Det er 32 bit og er kodet i ANSI. format PE GUI 4.0 entry start include "win32a.inc" ;------------------------------------------------------------------------------------------------------------ section '.text' code readable executable start: invoke MessageBox,0,tekst,caption,MB_OK or MB_ICONINFORMATION invoke ExitProcess,0 ;------------------------------------------------------------------------------------------------------------ section '.data' data readable writeable caption db "Jul",0 tekst db "Juleribbe er best med sprøtt svor.",0 ;------------------------------------------------------------------------------------------------------------ section '.idata' import data readable writeable library kernel32,'KERNEL32.DLL',\ user32,'USER32.DLL' include 'api\kernel32.inc' include 'api\user32.inc' Endret 11. desember 2012 av LonelyMan 1 Lenke til kommentar
LonelyMan Skrevet 11. desember 2012 Forfatter Del Skrevet 11. desember 2012 Et litt mer avansert program for å finne antall fysiske kjerner på prosessoren. format PE GUI 4.0 entry start include "win32a.inc" section '.text' code readable executable ;--------------------------------------------------------- start: stdcall CoreCount stdcall dwtoa,eax,tallstreng stdcall catstr,streng1,tallstreng stdcall catstr,streng1,streng2 invoke MessageBox,0,streng1,cpt,MB_OK or MB_ICONINFORMATION invoke ExitProcess,0 ;--------------------------------------------------------- ; Sjekk om cpu støtter hyper-threading proc HTSupport push ebx xor eax,eax cpuid cmp eax,1 jb .fail cmp ebx,$756e6547 jne .fail cmp edx,$49656e69 jne .fail cmp ecx,$6c65746e jne .fail mov eax,1 cpuid test edx,$10000000 jnz .succ .fail: xor eax,eax jmp .bye .succ: mov eax,1 .bye: pop ebx ret endp ;--------------------------------------------------------- ; Sjekk hvor mange kjerner cpu har (ekte kjerner, om hyper threading eksisterer ; så deler vi på 2 for å finne ekte antall kjerner proc CoreCount local ht rd 1 local s SYSTEM_INFO stdcall HTSupport mov [ht],eax lea eax,[s] invoke GetSystemInfo,eax mov eax,[s.dwNumberOfProcessors] mov ecx,[ht] test ecx,ecx jz .bye shr eax,1 .bye: ret endp ;--------------------------------------------------------- section '.data' data readable writeable cpt db "Kjerner",0 streng1 db "Du har ",19 dup 0 streng2 db " kjerner.",0 tallstreng db 3 dup 0 ;--------------------------------------------------------- section '.idata' import data readable writeable library kernel32,'KERNEL32.DLL',\ user32,'USER32.DLL' include 'api\kernel32.inc' include 'api\user32.inc' ;--------------------------------------------------------- include "%INCLUDE%\PRIVLIB\catstr.asm" include "%INCLUDE%\PRIVLIB\dwtoa.asm" 1 Lenke til kommentar
LonelyMan Skrevet 11. desember 2012 Forfatter Del Skrevet 11. desember 2012 Program for å sjekke om cpu'en din har matteprosessor. format PE GUI 4.0 entry start include "win32a.inc" ;------------------------------------------------------------------------------------------------------------ section '.text' code readable executable start: stdcall x87_support test eax,eax jz .no_x87_onchip invoke MessageBox,0,x87_on_chip,caption,MB_OK or MB_ICONINFORMATION jmp .die .no_x87_onchip: invoke MessageBox,0,x87_gone,caption,MB_OK or MB_ICONINFORMATION .die: invoke ExitProcess,0 ;------------------------------------------------------------------------------------------------------------ ; Sjekk om cpu har en x87 FPU unit på chip (matteprosessor) proc x87_support local returnvalue dd 0 pushad xor eax,eax cpuid cmp eax,1 jb .not_supported mov eax,1 cpuid and edx,1 jz .not_supported mov [returnvalue],edx jmp .end .not_supported: xor eax,eax .end:popad mov eax,[returnvalue] ret endp ;------------------------------------------------------------------------------------------------------------ section '.data' data readable writeable x87_on_chip db "x87 støttes.",0 x87_gone db "Du har en veldig gammel cpu.",0 caption db "Status",0 ;------------------------------------------------------------------------------------------------------------ section '.idata' import data readable writeable library kernel32,'KERNEL32.DLL',\ user32,'USER32.DLL' include 'api\kernel32.inc' include 'api\user32.inc' 1 Lenke til kommentar
LonelyMan Skrevet 11. desember 2012 Forfatter Del Skrevet 11. desember 2012 (endret) Hvordan lage et struktur objekt og sette data i elementene. format PE GUI 4.0 entry start include "win32a.inc" struct MinData banan dd ? eple dd ? pærer dd ? ends ;------------------------------------------------------------------------------------------------------------ section '.text' code readable executable start: lea eax,[Mitt_Objekt] mov [eax+MinData.banan], 50 mov [eax+MinData.eple], 100 mov [eax+MinData.pærer], 200 invoke ExitProcess,0 ;------------------------------------------------------------------------------------------------------------ section '.data' data readable writeable Mitt_Objekt MinData ? ;------------------------------------------------------------------------------------------------------------ section '.idata' import data readable writeable library kernel32,'KERNEL32.DLL',\ user32,'USER32.DLL' include 'api\kernel32.inc' include 'api\user32.inc' Endret 11. desember 2012 av LonelyMan 1 Lenke til kommentar
LonelyMan Skrevet 11. desember 2012 Forfatter Del Skrevet 11. desember 2012 (endret) Allokere 50 Millioner bytes med minne og fylle hele bufferen med tallet 100. Deretter frigjøre minnet igjen. format PE GUI 4.0 entry start include "win32a.inc" MILLION=1000000 ;------------------------------------------------------------------------------------------------------------ section '.text' code readable executable ;------------------------------------------------------------------------------------------------------------ start: ; Alloker 50 millioner bytes med minne invoke GlobalAlloc,GMEM_FIXED,MILLION*50 mov [minne],eax ; Fyll minne med tallet 100 i hele bufferen push edi mov edi,eax mov ecx,MILLION*50 mov eax,100 rep stosb pop edi ; Frigjør minnet igjen invoke GlobalFree,[minne] ; Avslutt program invoke ExitProcess,0 ;------------------------------------------------------------------------------------------------------------ section '.data' data readable writeable minne dd ? ;------------------------------------------------------------------------------------------------------------ section '.idata' import data readable writeable library kernel32,'KERNEL32.DLL',\ user32,'USER32.DLL' include 'api\kernel32.inc' include 'api\user32.inc' Endret 11. desember 2012 av LonelyMan 1 Lenke til kommentar
LonelyMan Skrevet 11. desember 2012 Forfatter Del Skrevet 11. desember 2012 (endret) Program for å søke gjennom en buffer på 100 millioner bytes, søke etter alle bytes som er en 'B' og så gjøre noe med den byten. Jeg gjør ingenting med den i dette eksemplet. format PE GUI 4.0 entry start include "win32a.inc" ;------------------------------------------------------------------------------------------------------------ section '.text' code readable executable start: ; Vi setter eax som peker til begynnelsen av buffer mov eax,[buf] ; ecx er loop counter (vi søker gjennom 100 millioner bytes) mov ecx,100000000 ; Her begynner loopen .loop: ; les første byte i buffer mov dl,[eax] ; Sjekk om lest byte er en B cmp dl,'B' ; jump-not-even (hopp til label .no_match hvis det ikke er en B) jne .no_match ; Hvis vi kom hit, så har vi en match her, gjør noe med byten (jeg gjør ingenting her) .no_match: ; inkrementer eax med 1 byte for å avansere til neste byte i buffer add eax,1 ; Trekk fra en fra loop telleren sub ecx,1 ; Hvis ecx ikke er null enda, så hopper vi tilbake til loopen igjen jnz .loop ; Avslutt program invoke ExitProcess,0 ;------------------------------------------------------------------------------------------------------------ section '.data' data readable writeable buf dd ? ;------------------------------------------------------------------------------------------------------------ section '.idata' import data readable writeable library kernel32,'KERNEL32.DLL',\ user32,'USER32.DLL' include 'api\kernel32.inc' include 'api\user32.inc' Endret 11. desember 2012 av LonelyMan 1 Lenke til kommentar
LonelyMan Skrevet 11. desember 2012 Forfatter Del Skrevet 11. desember 2012 Et flamme program jeg har laget i flat assembler. Det er ikke kodet i direct3d, dette benytter dib sections. Fire.zip 2 Lenke til kommentar
LonelyMan Skrevet 11. desember 2012 Forfatter Del Skrevet 11. desember 2012 (endret) Her er en roterende korridor som jeg har kodet i flat assembler (Direct3D). Jeg legger ikke ved programmet da jeg har kodet den spesifikt for min skjerm, og har ikke feilsjekking i det. Endret 11. desember 2012 av LonelyMan 1 Lenke til kommentar
LonelyMan Skrevet 15. desember 2012 Forfatter Del Skrevet 15. desember 2012 (endret) Jeg har skrevet et bibliotek for å måle tiden det tar for en bit kode å kjøre, og gjort det mulig å måle funksjoner opp mot hverandre i en graf. Så skrev jeg 10 forskjellige rutiner for å dele et tall på 2 for å se hvilke metoder som var raskest. Metode 1: Dele ved å bruke en vanlig div instruksjon Metode 2: Dele ved å shifte en til høyre med shr Metode 3: Dele ved å bruke x87 matteprosessoren Metode 4: Dele ved å bruke SSE scalar un-aligned deling Metode 5: Dele ved å bruke SSE scalar un-aligned shift right Metode 6: Dele ved å bruke SSE packed aligned deling Metode 7: Dele ved å bruke SSE packed aligned mul 0.5 Metode 8: Dele ved å bruke x87 matteprosessor, mul 0.5 Metode 9: Dele ved å bruke SSE packed aligned mul 0.5 (28 dwords) Metode 10: Dele ved å bruke SSE packed aligned shift right (28 dwords) Her er resultatet. Metode 1 er lengst til venstre og Metode 10 lengst til høyre. Metode 9 vant, men en helt vanlig shift instruksjon (Metode 2) er ikke å forakte heller. Endret 15. desember 2012 av LonelyMan 2 Lenke til kommentar
LonelyMan Skrevet 24. desember 2012 Forfatter Del Skrevet 24. desember 2012 Kube som jeg har laget for en stund tilbake. cube.zip 1 Lenke til kommentar
Gjest Slettet+9871234 Skrevet 8. januar 2013 Del Skrevet 8. januar 2013 Glimrende. Jeg har en ny forside tråd på WPW: Automate this - the rise of robots to tame big data Det burde jo være av interesse for en assembly programmerer hvor hastighet kan være kritisk. Lenke til kommentar
LonelyMan Skrevet 8. januar 2013 Forfatter Del Skrevet 8. januar 2013 Ja det er sant. Jeg kjenner han som vedlikeholder ad muncher, det var skrevet i ren assembler, samler ikke akkurat inn store mengder data, men de samler inn ads iallefall. Når det gjelder store prosjekter så har jeg ingen på gang. Lenke til kommentar
Gjest Slettet+9871234 Skrevet 8. januar 2013 Del Skrevet 8. januar 2013 (endret) ... , men de samler inn ads iallefall. Interessant. Har du ytterligere informasjon eller kilder? Når det gjelder store prosjekter så har jeg ingen på gang. Jeg har så mange at jeg nesten er handlingslammet. Jeg er svært oppsatt av å automatisere det som kan automatiseres. It may be hard to believe, but before the end of this century, 70 percent of today’s occupations will likewise be replaced by automation. Yes, dear reader, even you will have your job taken away by machines. In other words, robot replacement is just a matter of time. This upheaval is being led by a second wave of automation, one that is centered on artificial cognition, cheap sensors, machine learning, and distributed smarts. This deep automation will touch all jobs, from manual labor to knowledge work. Kilde: http://www.wired.com...-take-our-jobs/ Jeg skrev en hovedoppgave om dette på Mat Nat UIO, blant annet et eget kapittel om Nevrale og radiale basis nettverk. Algoritmene kan endog forbedre seg selv via selvlæring og trening. Endret 8. januar 2013 av Slettet+9871234 Lenke til kommentar
LonelyMan Skrevet 8. januar 2013 Forfatter Del Skrevet 8. januar 2013 (endret) http://www.admuncher.com/ Om du går på about siden: http://www.admuncher.com/about.shtml Så kjenner jeg han som vedlikeholder ads, Jeffrey Cole, ikke han som programmerer. Endret 8. januar 2013 av LonelyMan Lenke til kommentar
LonelyMan Skrevet 8. januar 2013 Forfatter Del Skrevet 8. januar 2013 Har du noen interessante prosjekter som ikke er nevnt? Lenke til kommentar
Gjest Slettet+9871234 Skrevet 8. januar 2013 Del Skrevet 8. januar 2013 (endret) Jeg kunne ansatt 1000 personer, men da måtte de minst forsvare lønnen, dvs gi et positivt bidrag til konantstrømmen. Det er ikke lett. Derfor satser jeg heller på automatisering og robotics. Virkelig en drømmevever. Noen ganger kan man spare seg til fant Ta en rask titt på videoene i den tråden. Adobe DW CS6 + PhoneGap. Jeg har jo også Embarcadere RAD studio XE II men det får jeg ikke tid til å titte på. http://www.embarcade...ucts/rad-studio RAD Studio XE III bruker PhoneGap til å bygge native mobile applikasjoner. Men siden PhoneGap eies av Adobe, ser jeg ingen grunn til ikke å bruke DW CS6 + PhoneGap. Endret 8. januar 2013 av Slettet+9871234 Lenke til kommentar
LonelyMan Skrevet 8. januar 2013 Forfatter Del Skrevet 8. januar 2013 Er det innovativt du tenker på eller tenker du primært penger i dine prosjekter? Eller begge Lenke til kommentar
Gjest Slettet+9871234 Skrevet 8. januar 2013 Del Skrevet 8. januar 2013 (endret) Er det innovativt du tenker på eller tenker du primært penger i dine prosjekter? Eller begge Begge deler. http://www.admuncher.com/ Om du går på about siden: http://www.admuncher.com/about.shtml Så kjenner jeg han som vedlikeholder ads, Jeffrey Cole, ikke han som programmerer. Noen interessante påstander der. Mobile advertising networks and platforms. Overraskende nok fikk jeg ingen svar på den tråden. Opera sin ad platform samt http://www.admarvel.com/ er også nevnt der. Endret 8. januar 2013 av Slettet+9871234 Lenke til kommentar
LonelyMan Skrevet 8. januar 2013 Forfatter Del Skrevet 8. januar 2013 Dette med at roboter tar over arbeidet er ganske interessant. Jeg tror at jo mer arbeid som blir automatisert, gjør at vi mennesker får flere og flere "luksus" ideer. Vi blir kanskje mindre bundet til fysisk arbeid, men ideene kommer til å strømme til fortere og proporsjonalt som oppgaver blir tatt over av roboter så vil vi som sagt få flere luksusideer og vi kommer til å arbeide mer ikke-fysisk. Folk vil likevel tjene penger og det faktum at verden kan styres mer automatisk enn noensinne vil selvfølgelig bidra til en eksplosjon av ideer, og med ideer kommer mer arbeid, ikke-fysisk arbeid så vel som fysisk arbeid. Lenke til kommentar
Gjest Slettet+9871234 Skrevet 9. januar 2013 Del Skrevet 9. januar 2013 Det er ganske interessant at Nobel pris vinner Paul Krugman nå skiver om dette på sin blog: http://krugman.blogs.nytimes.com/2012/12/08/rise-of-the-robots/ Han mener at mye av det arbeidet som har forsvunnet til Asia kan bringes tibake til USA ved at roboter gjør (en del av) jobben. Roboter lønnes ikke. 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å