Gå til innhold

Anbefalte innlegg

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'

 

q5Ycu.png:xmas:

Endret av LonelyMan
  • Liker 1
Lenke til kommentar
Videoannonse
Annonse

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"

 

2J3w0.png

  • Liker 1
Lenke til kommentar

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'

 

iNGJB.png

  • Liker 1
Lenke til kommentar

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 av LonelyMan
  • Liker 1
Lenke til kommentar

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 av LonelyMan
  • Liker 1
Lenke til kommentar

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 av LonelyMan
  • Liker 1
Lenke til kommentar

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. :)

 

KbAqO.png

Endret av LonelyMan
  • Liker 2
Lenke til kommentar
  • 2 uker senere...
  • 3 uker senere...
Gjest Slettet+9871234

... , 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 av Slettet+9871234
Lenke til kommentar
Gjest Slettet+9871234

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. :omg:

 

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 av Slettet+9871234
Lenke til kommentar
Gjest Slettet+9871234

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 av Slettet+9871234
Lenke til kommentar

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

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...