Cum se scrie un mic program

Cum se scrie un mic program?

Prompt, uv. wizard, ce modul trebuie să utilizez pentru a scrie un program de lucru cu registrul fără o interfață grafică. Probyval winAPI - 14,5 kb, KOL este același. Poate că există un modul care face programul chiar mai mic. De exemplu, undeva am văzut codul sursă al troianului, deci a cântărit 7 kb în general. Sau asta nu se întâmplă?







Trebuie să scrie pe asbler. Delphi chiar și cu inserții asbler nu vă vor ajuta.

Și ce scrii despre troian?

Dă 8162 Kb. Compilatorul standard este al 6-lea Delphi.

Assembler: C3 (ret) - 1 octet :)

Îmi amintesc: forum pe Delphi :-)

Nu te dracu! Și am 8192 octeți pe D6 :-)
Și dacă faceți de asemenea o copie de siguranță, atunci în cele din urmă puteți 5120 octeți. Aici. "

Hei, conservatorii, care Delphi 1, raportează rezultatele. )

Modest incognito. Am avut deja o nonsoriu să spun că nu puteți obține un cod compact și rapid pe Delphi și erau oameni gata să se certe, dar faptul este un fapt. E vorba de compilator.
Eu văd tot mai des asemenea nori. Da, și a întrebat odată. KOL încercat - este super pentru programele vizuale. WinAPI, de asemenea, a fost. Dar Api în cazul este un pic de perversiune. Concluzie: Asamblorul nu doare niciodată. Deci nici o parte Delphi și aplicația minimă nu sunt conectate. Delphi este viteza de dezvoltare și frumusețea unui limbaj de nivel înalt.

Și despre ce este posibil să scrieți codul de asamblare. Adică, există un program special pentru asta?

Modest incognito. Codul de asamblare poate fi scris chiar și în Notepad (fac acest lucru). Există încă IDE-uri diferite pentru asamblor, cum ar fi RadAsm, AsmEdit. Ca urmare, acest fișier text este compilat, fișierul obiect este obținut. Apoi, cu programul Linker (Linker, în parlance comună), fișierele obiect sunt îmbinate cu. de exemplu, un fișier de resurse, bine sau pur și simplu, între ele. Ieșirea este un fișier exe / com / dll / drv proaspăt (totul depinde de setările). Cel mai comun Assembler (AMS, pur și simplu vorbind) este MASM și TASM.
Hmm. Văd că reprezentați perspectiva asamblorului.

> AlexZ # xA0; (Aug 21, 04 01:29) [10]

> Delphi nu poate obține un cod compact și rapid

> Dar Api în Delphi este un pic de perversiune.

De ce? Apelarea funcțiilor API într-un program C este o perversiune? Și chemarea funcțiilor API în programul Asm este o perversiune? Deci, de ce credeți că numiți aceleași funcții în programul Pascal (sau în programul Fortran sau în orice alt program) o perversiune? Este destul de greu să înțelegi cum se deosebește un CALL de altul.

Am scris un program pentru descărcarea din fișierul de rețea într-un fișier și într-un ansamblu:
pe un caz după compresie aproximativ 3696 б - nu este rău, dar pe asme - mai puțin de 1 kb. - (976 octeți după comprimare) cod:

începe:
invoca URLDownloadToFile, NULL, addr sait, addr failo, 0, NULL
invoca ShellExecute, 0, addr deschis, addr failo, NULL, NULL, SW_NORMAL
invoca # xA0; ExitProcess, 0
Începeți sfârșitul

deși asm jură la acest cod (avertisment scrie) - dar funcționează!


> Dar Api în Delphi este un pic de perversiune

Hee-hee :-))
Și în Cu ++ nu izvrat?

> AlexZ # xA0; (22.08.04 19:07) [16]







Nimeni nu susține că codul cel mai compact și de mare viteză va fi obținut pe Asma (și chiar mai compact și de mare viteză - direct în codurile mașinii, dacă aceasta este suficientă răbdare).

Dar ce are de-a face cu Delphi? Este posibil să o comparați cu Asm? Să comparăm produsele unei clase ONE, dacă vrem să obținem niște estimări - o astfel de comparație va fi corectă.

Și de ce pe Delphi cu WinAPI este necesar să "koryachitsya"? Nu înțeleg. Toate apelurile către WinAPI sunt scrise la Delphi exact în același mod ca și pe C și pe alte JAV-uri. Unde este "koryachenie"?

Dacă trebuie să vorbim despre "koryachenie", atunci mai presus de toate, va trebui să vă ocupați de apelurile WinAPI doar de Asma. În spatele registrelor, urmăriți singur teancul - și toate acestea de dragul aceleiași echipe CALL. Desigur, este clar că acesta este codul cel mai rapid și cel mai compact - dar dacă vorbim despre "koryachene", atunci acesta este și el.

> AlexZ # xA0; (Aug 22, 04 20:43) [19]

> Nu, nu m-ai înțeles: Tocmai am spus persoanei: "Vrei
> Cod rapid în pereche de KB? - Luați Asm-ul și nu distorsiona-te în yazyke
> nivel ridicat_

Te-am înțeles cum ți-ai spus: (vezi [10]):
1. "pe Delphi nu puteți obține un cod compact și rapid."
2. "Dar Api în Delphi este un pic de perversiune."

După cum puteți vedea, în ambele cazuri ați vorbit în mod specific despre Delphi și nu despre "_Language_ of high level_". La acea vreme era necesar să vorbim despre orice JAVA, iar Delphi nu are absolut nimic de-a face cu asta. La care am reacționat în [14].

> Se va compila cu Assembler și programul pe care îl are
> va începe cu comanda ret (opcode C3h, $ C3 în Pascal).

> Assembler traduce comenzile condiționate în respectivele lor
> opcode (combinații de octeți)

Nu pierdeți timpul cu explicații inutile. Am scris atât în ​​Asma cât și în coduri - și totuși nu am uitat totul. o)

> prin urmare, nimic inutil pur și simplu nu poate fi.

Și aici tu, IMHO, te înșeli. Assembler - este, de asemenea, doar un traducător, nu inteligența artificială, și procesoarele moderne - un lucru dificil. Dacă AMSm au făcut doar o traducere directă, atunci cu același cod de intrare, toate asmurile ar da același cod de mașină - și asta nu este cazul deloc. Unul Асм optimizează unul, altul - altul (de exemplu, chiar și adăugarea simplă este posibilă traducerea atât în ​​ADD, cât și în OR, nu vorbind despre mai dificilă метериях). O persoană încă mai scrie mai bine - pentru că numai o persoană are inteligența pentru a ține cont în fiecare punct al programului de toate trăsăturile piesei de fier.

Dacă sunteți interesat, găsiți un articol de Chris Kasperski pe această temă (rumagie în arhivele revistei pe www.programme.ru). Acolo, Chris compară codul mașinii obținut de diferiți traducători (inclusiv asamblorii) - și se dovedește că unul dintre ei optimizează mai bine pentru a conduce, altul se compară cu ceva etc. Și inteligența umană îi permite să optimizeze codul în fiecare punct al programului exact așa cum este necesar în acest moment. Niciun translator / asamblator nu este capabil de acest lucru (și dacă devine capabil vreodată, atunci va fi cu adevărat inteligență artificială).

> A trebuit să sun mai multe API-uri, să obțin rezultate
> una, și trimiteți ca parametru celuilalt și uitați. Stack -
> Un loc minunat pentru stocarea datelor temporare. Și în spatele registrelor
> să urmezi în mod placut este la fel ca o chestiune de fapt "variabilele globale". Există
> pentru ce "să cucerești".

Da, este pentru asta, nimeni nu a argumentat. A fost o întrebare a altui - că aici, doar pe Asma, cu apeluri WinApi pentru a cuceri mai mult și este necesar.

> Și PS: traducătorul delphi nu rezolvă prea mult.

Și încă un PS, cu permisiunea ta: nu traducătorul Delphi. dar traducătorul vreunui. Permiteți-mi să subliniez din nou: oricine. Cu el și JAVA.

Ce au de-a face cu Delphi? De ce întotdeauna compari Delphi cu Asm și nu cu Java?

Dumnezeule. Ei bine, la ce macrocomenzi?

2 AlexZ # xA0; (23.08.04 00:54) [21]
> De ce:
> Da, oamenii de pe forum Delphi a întrebat: "De ce este programul meu atât de mult> cântărește?" Așa că am spus: "Nu luați Delphi."

Pentru a "împărți muștele și tăieturile". Vorbiți despre un "program vizual pentru un utilizator" sau despre "o sarcină de sistem care nu este vizuală, care efectuează acțiuni mici dar necesare"?
În cazul în care primul, atunci ia în considerare timpul petrecut pentru dezvoltarea acestui program pe ACM. Dacă al doilea, atunci unde este Delphi?

> MIGUR # xA0; (23.08.04 05:17) [25]

Spuneți-mi, știți că programele împachetate sunt mici numai pe disc și în memorie - chiar mai mult decât cele neambalate? Și că acestea funcționează mai lent neambalate?







Articole similare

Trimiteți-le prietenilor: