Gå til innhold

Anbefalte innlegg

Metoden jeg bruker for å beregne delta verdier og så absolutt verdi for heuristic kostnad, så har jeg eliminert all branching, den er 100% fri for branching. Det er nesten bortimot umulig å gjøre, det gjør at jeg kan kjøre metoden fritt i prosessoren uten avbrytning, dvs at den kjører ved prosessorens sanne hastighet uavbrutt. Hvis man ser på samme koden skrevet i et annet språk så er der noe rundt 10 brancher i den samme koden.

 

Kan forøvrig legge til at, branching er ikke "demonisk" i seg selv, men man må forstå branching for å vite når man bør kvitte seg med det. F.eks, om du sjekker om du har nådd kanten av et map (for å unngå at du leser deler av et map som ikke eksisterer), så er ikke branching et onde, for der vil man få en misbranch veldig skjeldent. Men i tilfellet hvor man beregner kostnad av alle bevegelser så er branching er stort problem, derfor jeg har strevet så hardt med å kvitte meg med det i dette tilfellet.

 

For normale programmerere, så kan de legge til en IF-THEN sjekk her og der uten å tenke mer over det, men når man blir en type programmerer som meg, så blir jeg forbannet om jeg bare må ha en eneste en av disse i programmet, for jeg vet hva slags skade det kan gjøre.

Endret av LonelyMan
Lenke til kommentar
Videoannonse
Annonse

Her er en funksjon jeg har laget for å hente ut alle registrene fra et hvilket som helst program som kjører fra en hvilken som helst posisjon, uten å forhindre kjøringen av programmet. Dette er noe jeg brukte for å lage trainere for spill, men det kan brukes som et verktøy om du driver med reverse engineering.

 

proc getregs uses ebx esi edi,hprocess,address,pregs
 mov edi,[pregs]
 mov esi,[address]
 mov [edi+regs.inj_add],esi
 invoke VirtualAllocEx,[hprocess],NULL,1,MEM_RESERVE or MEM_COMMIT,PAGE_EXECUTE_READWRITE
 test eax,eax
 jz .end
 mov [edi+regs.base],eax
 lea eax,[edi+regs.oldcode]
 invoke ReadProcessMemory,[hprocess],esi,eax,7,NULL
 lea eax,[edi+regs.pold]
 invoke VirtualProtectEx,[hprocess],esi,7,PAGE_EXECUTE_READWRITE,eax
 mov [edi+regs.enabled],FALSE
 mov dword [r_one],esi
 mov eax,[xorkey1]
 mov dword [r_two],eax
 mov dword [r_four],eax
 mov dword [r_six],eax
 mov ecx,[edi+regs.base]
 mov dword [r_eleven],ecx
 add ecx,4
 mov dword [r_three],ecx
 rept 4 n:0 {
 add ecx,4
 mov dword [r_five+(n*6)],ecx }
 rept 4 n:0 {
 add ecx,4
 mov dword [r_seven+(n*6)],ecx }
 mov dword [r_eight],esi
 rept 7 n:0 {
 mov al,[edi+regs.oldcode+n]
 mov byte [r_nine+(n*4)],al }
 mov eax,[edi+regs.base]
 add eax,40
 mov dword [r_ten],eax
 stdcall WriteProcessMemoryX,[hprocess],eax,regs_code,regscode_size
 mov eax,[edi+regs.base]
 add eax,40
 mov dword [jmp_instruction+1],eax
 stdcall WriteProcessMemoryX,[hprocess],esi,jmp_instruction,6
 mov eax,TRUE
 .end:
 ret
endp
regs_code:
 label r_one at $+1
 push $ff
 pushfd
 pushad
 push eax
 pushfd
 pop eax
 push esi
 bswap eax
 rol eax,1
 label r_two at $+1
 mov esi,$ffffffff
 xor eax,esi
 pop esi
 push eax
 label r_three at $+2
 pop dword [$ffffffff]
 pop eax
 push esi
 bswap eax
 bswap ebx
 bswap ecx
 bswap edx
 rol eax,1
 rol ebx,1
 rol ecx,1
 rol edx,1
 label r_four at $+1
 mov esi,$ffffffff
 xor eax,esi
 xor ebx,esi
 xor ecx,esi
 xor edx,esi
 push eax ebx ecx edx
 label r_five at $+2
 rept 4 { pop dword [$ffffffff] }
 pop esi
 mov eax,esp
 mov ebx,ebp
 mov ecx,esi
 mov edx,edi
 bswap eax
 bswap ebx
 bswap ecx
 bswap edx
 push esi
 rol eax,1
 rol ebx,1
 rol ecx,1
 rol edx,1
 label r_six at $+1
 mov esi,$ffffffff ; esi = xorkey
 xor eax,esi
 xor ebx,esi
 xor ecx,esi
 xor edx,esi
 push eax ebx ecx edx
 label r_seven at $+2
 rept 4 { pop dword [$ffffffff] }
 pop esi
 label r_eight at $+1
 mov eax,$ffffffff
 label r_nine at $+2
 rept 7 { mov byte [eax],$ff
 inc eax }
 push 1
 label r_eleven at $+2
 pop dword [$ffffffff]
 cld
 label r_ten at $+1
 mov edi,$ffffffff
 xor eax,eax
 mov ecx,($+5)-regs_code
 rep stosb
 popad
 popfd
 ret
 regscode_size = $-regs_code	

Lenke til kommentar
Gjest Slettet+9871234

Her er en funksjon jeg har laget for å hente ut alle registrene fra et hvilket som helst program som kjører fra en hvilken som helst posisjon, uten å forhindre kjøringen av programmet. Dette er noe jeg brukte for å lage trainere for spill, men det kan brukes som et verktøy om du driver med reverse engineering.

 

Jeg ser både lyst og mørkt på fremtiden ang assembler og andre språk. Det er lyse og mørke sider for begge delene. Det ene problemet for assembler er at det blir bare flere og flere instruksjonssett tilgjengelige, og antall instruksjoner vil en dag bli for mye for en assembler programmerer å håndtere. Det vil ikke bli praktisk lengre, men dette behøver ikke skje om utviklingen gjør at gamlere instruksjoner forsvinner, noe som det gjorde med implementering av x64 så forsvant noen eldre instruksjoner for å gjøre plass for nye. Det andre er om prosessorer blir mer risc like i fremtiden, om det er tilfellet blir jobben for kompilatorer enklere å finne en optimal løsning, og det gjør at behovet for assembler blir mindre. Men om det fortsetter i retningen vi går nå, som er mer cisc like, hvor vi får flere og flere instruksjoner tilgjengelige, så vil kompilatorer slite veldig med å finne den optimale løsningen, hvilket gjør at assembler går motsatt vei, blir mer og mer nyttig.

 

Assembler instruksjonene i din siste post virker da kjent. Hvilken prosessor er den skrevet for?

 

Asm fungerer også utmerket til å utvikle server programvare, da behøver ikke programmet ditt være portabelt, klientene har ingen visshet om hva serveren gjør uansett, så på en server kan du pakke den full med asm programmer uten negative konsekvenser.

Som man kan styre fra en nettside?

Lenke til kommentar

Den støtter alle ia-32 prosessorer og alle nye x86-64 prosessorer, inkludert alle som er bakoverkompatibelt med x86. Koden fungerer i 32 bit windows og 64 bit windows, sistnevnte under wow64. Om jeg skal nevne spesifike prosessorer så vil det ta veldig lang tid for listen er lang.

 

Instruksjonene er nok kjent ja, for sjansen er nesten 100% at instruksjoner går igjen fra et asm program til et annet. Men om koden virker kjent, vel, vanskelig å si om noen har skrevet noe liknende, om du har sett noe som er prikk likt, så må det være stjelt fra meg, for dette er min kode som jeg har laget selv. Men alle som programmerer opp mot andre prosesser, disse asm programmene har en tendens til å se like ut. (Mulig det er WriteProcessMemory som du kjenner igjen, det står en X bak min variant, dvs jeg har customisert min egen variant for å forhindre dll injection i den originale API varianten, derfor jeg la på X i navnet)

 

Styre fra nettside ja.

Endret av LonelyMan
Lenke til kommentar
Gjest Slettet+9871234

Instruksjonene er nok kjent ja, for sjansen er nesten 100% at instruksjoner går igjen fra et asm program til et annet. Men om koden virker kjent, vel, vanskelig å si om noen har skrevet noe liknende, om du har sett noe som er prikk likt, så må det være stjelt fra meg, for dette er min kode som jeg har laget selv. Men alle som programmerer opp mot andre prosesser, disse asm programmene har en tendens til å se like ut.

 

Jeg var kanskje litt upresis. Jeg mener at de fleste instruksjonene (notene) virket kjente. Hele koden (komposisjonen) kjenner jeg ikke igjen.

 

(Mulig det er WriteProcessMemory som du kjenner igjen, det står en X bak min variant, dvs jeg har customisert min egen variant for å forhindre dll injection i den originale API varianten, derfor jeg la på X i navnet)

 

Nei snarere tvert imot WriteProcessMemoryX samt invoke VirtualAllocEx er nettopp kode jeg ikke kjenner igjen.

 

Styre fra nettside ja.

 

Veldig spennende. Har tenkt på dette selv. Fint at du bekrefter det.

Endret av Slettet+9871234
Lenke til kommentar

Du kan f.eks bruke php til å starte programmet på serveren. Tenker du på å konvertere videoer på serveren gjennom en webside?

 

Er det en kompleks algoritme? Hvis det er en offisiell tjeneste for å konvertere diverse ting og ting skal stå i kø fra flere klienter, så er det ikke tvil om at asm kan hjelpe stort der, gjør deg sterkt konkurransedyktig. Om en annen server klarer å betjene 1000 stk per minutt, så kan du ved hjelp av asm kanskje klare å betjene dobbelt av det, eller firedobbelt.

Endret av LonelyMan
Lenke til kommentar

Om jeg hadde gjort noe liknende, så ville det ikke vært noe kommersielt, men kanskje noe på hobbybasis, og så ha en maskin på hjemmefront med webserver, php og diverse på den, og så ha en winsock server som deler arbeidet mellom hjemmemaskinene, for å utføre en spesifik oppgave som krever mye cpu kraft.

Endret av LonelyMan
Lenke til kommentar

Jeg har funnet et navn for pathfinding prosjektet mitt. Laget av LonelyMan.

 

RkAzTXy.png

 

Features:

  • Speed above else
  • Quality equally important
  • Can run as a server
  • Upgrade from client
  • Best algorithms used
  • Implemented in assembly
  • Automatic optimization
  • Extensive help file
  • Latest cpu tech guarantee
  • Wickedly hand crafted
  • Extremely reliable
  • Fully portable

Pay for two, get one (haha)

Buy once, upgrade forever. ($99) :hm:

 

Description:

 

"LonePath is a pathfinding library designed to provide all functionality of pathfinding with one major goal in mind; to overcome the speed problem that other pathfinding libraries are stuck with. LonePath will feed your game with path's faster than the speed of light.

 

The only requirement is that you follow a few very simple design principles for the library to function optimally."

 

Feedback from earlier buyers:

 

"Bob: Thanks for this library, it ran so fast that my computer melted"

 

"Julius: Our company benefited immensely from this, it ran so fast that the entire development compartment had a mutual and collective orgasm"

 

"Pumba: This made it possible for us to create huge swarms of units in our game"

Endret av LonelyMan
Lenke til kommentar
Gjest Slettet+9871234

Du kan f.eks bruke php til å starte programmet på serveren. Tenker du på å konvertere videoer på serveren gjennom en webside?

 

Nei ikke slik som videoer streames når de lastes opp til video delings siter. Jeg tenker på andre ting. Kan man for eksempel kjøre C / C++ / ASM kode via en php kron jobb på serveren? Det går kanskje ikke på en delt server, men på en dedikert eller kolokert server burde det vel være mulig?

Lenke til kommentar

Du kan kjøre programmer fra et php script, da burde du kunne kjøre det i en kron jobb også. Jeg er ikke kjent med oppsettet av php kron jobber, jeg har bare erfaring med kron jobber i linux. Men jeg er helt sikker på at du kan kjøre asm programmer i en php kron jobb, da slike jobber ikke definerer strukturen til php, den bare setter opp tidsbestemte oppgaver og går ikke utover mulighetene til php scriptet, med unntak av kanskje policyer satt på serveren, det må du selv sjekke.

 

Men slik som jeg ser det, om du skal både finne ut hvordan du kan kjøre asm programmer, om det går an og samtidig lage asm programmet, eventuelt finne ut om du faktisk behøver dette samt. finne ut om det er mulig å få en gevinst, så tror jeg tingene veier for at du bare går for den mest lettvinte løsningen.

 

Om du skal sette opp et asm program, så bør man på det helt basiske, i det minste være troende, dvs. man vet hva man gjør, hva man oppnår og hvorfor en gjør det. Jeg tror ikke du vil få en gevinst, på tross av at jeg ikke vet hva du skal gjøre, det er en intuisjon jeg har.

 

Du må gjerne forklare hva du har som intensjon å gjøre, men jeg har en stygg magefølelse her.

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