Учене асемблер в Делфи
Учене асемблер в Делфи
Основната цел на тази книга, за да запълни празнините в оригиналната документация за Borland Delphi Developer, с целия програмен код, както и теория, е напълно съвместим с всички версии на Delphi.
Използването на Borland Assembler в Делфи
Преди да започнем, бих искал да се определи нивото на знания, необходими за правилното усвояване на този материал. Трябва да сте запознати с вградени инструменти за отстраняване на грешки в Делфи. Необходимо е също така да има представа за такива условия и вида на изпълнение (инстанция), нулев указател и разпределение на паметта. Ако нещо от горните се съмнявате, опитайте се да бъдете много внимателни и предпазливи при въплъщението на продукта в практиката. В допълнение, само 32-битов код ще бъдат обсъдени, така че компилаторът не е необходимо да се намали Delphi 2.0.
Защо да използвате асемблер?
По мое мнение, Object Pascal, инструмент за генериране на бърз и ефективен код, но използването на асемблер в някои случаи за решаване на някои проблеми, по-ефективно. За цялата работа с Delphi, дойдох до заключението, че е необходимо използването на ниско ниво код в два от случаите.
Работа големи обеми от данни. Nb. В този случай ситуацията не е включена при използване на езика на заявката данни.
В режим на работа с висока скорост с дисплей съчетания. Nb. Значение на използването на опростени процедури за почистване на Паскал, но не и външни библиотеки и DirectX.
В края на статията ще разгледаме примери, които ясно отразяват важността на тези критерии, както и не само кога и къде да се използва инлайн монтаж, но също така и как да се включат този код в Делфи.
Какво е Assembler?
Както видяхме, процесорът манипулира стойността на регистъра. Автоматична операция под кодовото добавяне на 10 до стойността на EAX регистър е както следва
Въпреки това, такъв запис е абсолютно разбираеми и, като следствие, не е подходящ за отстраняване на грешки в програмата. Така Assembler е просто представяне на машинни инструкции в по-удобна форма. Сега нека видим как ще изглежда добавянето на 10 до EAX представителство в съвкупност:
Имайте предвид, че аз използвах няколко бинарни операции. Тези операции също се определят директно в обекта Pascal.
* Забележка от Jin X
Глупости! На първо място, на параметрите трябва да се регистрира само в много редки случаи (например при четене / писане от / до пристанището: от 20 ч, ал), и второ, Delphi7 компилатор генерира точно Mov граф, 12345678h използване Брой: = $ 12345678 , Но! Когато се броят: = 0, генерирана пара XOR EAX, EAX + Mov граф, EAX. Освен това, само за да спестите памет (например запис е по-кратък в представителството на машината).
** Забележка от Jin X
той също не е вярно, компилаторът върши много по-просто: вкл граф