Învățarea de asamblare în delphi

Învățarea de asamblare în Delphi

Scopul principal al acestei lucrări, pentru a umple golurile în documentația originală pentru Borland Delphi Developer, cu întregul cod de program, precum și teorie, este pe deplin compatibil cu toate versiunile de Delphi.

Utilizarea Borland Delphi Assembler

Înainte de a începe, aș dori să se determine nivelul de cunoștințe necesare pentru asimilarea corectă a acestui material. Trebuie să fie familiarizați cu instrumente de depanare integrate în Delphi. De asemenea, este necesar de a avea o idee despre termeni, cum ar fi tipul de punere în aplicare (instanțierea), pointer nul și alocarea de memorie. Dacă ceva din cele de mai sus sunt în dubiu, încercați să fie foarte atent și precaut în întruparea produsului în practică. În plus, numai cod pe 32 de biți vor fi discutate, astfel încât compilatorul nu are nevoie pentru a reduce Delphi 2.0.

De ce să folosiți asamblare?

În opinia mea, Object Pascal, un instrument pentru a genera cod rapid și eficient, dar utilizarea de asamblare, în unele cazuri, ne permite să rezolvăm unele sarcini mai eficient. Pentru toate lucrările cu Delphi, am ajuns la concluzia că utilizarea codului de nivel scăzut, este necesar, în două cazuri.

Manipularea unor cantități mari de date. Nr. În acest caz, situația nu este inclusă atunci când se utilizează limba de interogare a datelor.

În operare de mare viteză, cu rutine de afișare. Nr. Înțeles utilizarea unor proceduri simple pentru a curăța Pascal, dar nu biblioteci externe și DirectX.

La sfârșitul articolului ne vom uita la exemple care să reflecte în mod clar importanța acestor criterii, precum și nu numai când și unde să folosească asamblare în linie, dar, de asemenea, modul în care să includă acest cod în Delphi.

Ce este Assembler?

După cum am văzut, procesorul manipulează valoarea registrului. Codul de funcționare automată adăugând 10 la valoarea registrului EAX este după cum urmează

Cu toate acestea, o astfel de înregistrare este absolut ușor de citit și, în consecință, nu este potrivit pentru depanarea programului. Deci, Assembler este o simplă reprezentare a instrucțiunilor mașinii într-o formă mai convenabilă. Acum, să vedem cum va arăta adăugarea de 10 la EAX reprezentare într-un ansamblu:

Rețineți că am folosit câteva operații binare. Aceste operații sunt determinate direct în Obiect Pascal.

* Notă Jin X

Prostii! În primul rând, parametrii trebuie să fie doar registre în cazuri foarte rare (de exemplu, atunci când citirea / scrierea de la / la port: out 20h, al), și în al doilea rând, Delphi7 compilator generează exact Count mov, 12345678h folosind Count: = $ 12345678 . Dar! Când facem Count: = 0, generat Count abur xor eax, eax + mov, eax. în plus, numai pentru a economisi memorie (o astfel de înregistrare este mai scurt în reprezentarea mașinii).

** Notă Jin X

nu este, de asemenea, adevărat, compilatorul face mult mai simplu: inc Count

Materiale aleatoare:

Yandex căutare

Întrebări despre Delphi

limba Delphi

nor de etichete

Harta site-ului