Assembler în Delfi, articole, Delfi, articole despre
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.
Direcția articol principal, este familiarizat cu ansamblul în Object Pascal. Cu toate acestea, nu ne va fi dor de acele aspecte ale programării, care vor cere o explicație pentru exemplele specifice prezentate în acest articol.
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.
(1) Prelucrarea unei cantități mari de date. Nr. În acest caz, situația nu este inclusă atunci când se utilizează limba de interogare a datelor.
(2) În exploatarea de mare viteză cu subrutine 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.
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:
Și aici este modul în care valoarea vychitaenie EBX EAX
Pentru a păstra cifra, puteți pur și simplu puneți-l într-un alt registru
și, desigur, să ia de acolo
Cu toate acestea, există un punct important, care este pe cale de a uita că nu este de dorit. Deoarece registru 32 de biți (4 octeți), atunci valoarea sa este scrisă direct în cele patru celule de memorie 1536, 1537, 1538 și 1539.
Și acum să vedem modul în care compilatorul convertește operațiile cu variabile în cod nativ. Să presupunem că avem un șir de caractere
Compilatorul nu poate utiliza tipul de linie
datorită faptului că cel puțin un parametru al instrucțiunilor trebuie să fie înregistrați. Dacă te uiți la linia
Pentru variabile, tipul de care este diferit de ansamblu, totul este complicat. Cu toate acestea, uita-te la acest subiect un pic mai târziu, iar acum propune să consolideze teoria cu exemple practice.
Astfel, considerăm primul exemplu. Imediat Îmi cer scuze pentru banal, dar în cazul în care ar trebui să începem.