- Ја почнал/а темата
- #1
Книгата е закон ама ништо без праксаZa nekoj pocetnik a koj saka da sovlada asm programiranje a isto taka kombiniranje na asm i c dobra kniga e "Springer - Guide to Assembly Language Programming in Linux"
Pozdrav
Се што ќе направиш со HLL(High-Level Language) можеш и со ASM и повеќе... ASM програмите, за разлика од програмите пишани во HLL се помали и побрзи...Ke mi kaze li nekoj sto potocno se programira so assembly!? Kakov vid programi se pravat i slicno. Tnx
Не паметно, туку задолжително...Pa pametni bi bilo... ako veke nekoj se bavi so bezbednost.... neli?
Кодот во Asembler е многу поголем од кодот напишан во виш програмски јазик. Но во Asembler можеш да бидеш попрецизен во дефинирањето на командата што сакаш да се изврши. И плус треба да се знае многу повеќе за хардверските компоненти на компјутерот ако се програмира во Asembler додека тие што програмираат во виш програмски јазик и не мора да имаат некои големи познавања.Се што ќе направиш со HLL(High-Level Language) можеш и со ASM и повеќе... ASM програмите, за разлика од програмите пишани во HLL се помали и побрзи...![]()
Точно е дека ASM изворниот код е поголем од кодот напишан во HLL... Но со ASM добиваш помала и побрза извршна програма споредена со еквивалентна напишана во HLL...Кодот во Asembler е многу поголем од кодот напишан во виш програмски јазик. Но во Asembler можеш да бидеш попрецизен во дефинирањето на командата што сакаш да се изврши. И плус треба да се знае многу повеќе за хардверските компоненти на компјутерот ако се програмира во Asembler додека тие што програмираат во виш програмски јазик и не мора да имаат некои големи познавања.
Сепак е добро да се знаат повеќе програмски јазици.
Koi se tie bisi programski jazici?Кодот во Asembler е многу поголем од кодот напишан во виш програмски јазик. Но во Asembler можеш да бидеш попрецизен во дефинирањето на командата што сакаш да се изврши. И плус треба да се знае многу повеќе за хардверските компоненти на компјутерот ако се програмира во Asembler додека тие што програмираат во виш програмски јазик и не мора да имаат некои големи познавања.
Сепак е добро да се знаат повеќе програмски јазици.
Виши програмски јазици : C++, Java, C#, Pascal, BASIC и сл.Koi se tie bisi programski jazici?
Na sto mislis треба да се знае многу повеќе за хардверските компоненти на компјутерот ако се програмира во Asembler podetelno ako sakas ok.
Да, лесно се учат регистрите и основниот сет на инструкции на 8086-ката и програмирање во реален режим (real-mode). Ама не би рекол дека толку лесно се учи програмирање во заштитен режим.Има, има, само не сум работел веќе подолго време во чист асемблер.
Лесно се учи x86 асемблерот но многу тешко и споро се програмира. Осум регистри (седум ефективно) и операции над нив, условно скокови, и не ти треба повеќе. Класичниот FPU e УЖАС за програмирање, но некаде SSE помага (но нема трансцедентни функции).
Програмите во асемблер се помали зошто не се користат класичните библиотеки (libc, stdlibc++) него мора директно да се користи Windows API-то (не знам како е во *nix). На пример, нема во асемблер malloc, него мора да се користи HeapAlloc или VirtualAlloc.
А дали е кодот побрз од класичен компајлер, зависи од вештината на асемблеристот, но мора во детали да ги знае оптимизациските водичи од Intel и AMD. Не вреди за маката, би се рекло.
Во ring 3 работат програмите, во ring 0 работи јадрото на Windows и драјверите.Не, јас зборувам за Windows програмирање во асемблер. Не за 8086, туку за 80386 нагоре. И тоа во 32 битен protected mode (во тоа работи нели Windows-от), ама во ring 3 (или 2 беше, сеедно последниот user mode го викаат).
switch (uMsg)
{
case WM_CLOSE:
EndDialog(hWnd, NULL);
break;
case WM_COMMAND:
switch(LOWORD(wParam))
{
case IDC_IZLEZI:
SendMessage(hWnd, WM_CLOSE, NULL, NULL);
break;
}
}
.if uMsg == WM_CLOSE
invoke EndDialog, hWnd, NULL
.elseif uMsg == WM_COMMAND
mov eax, wParam
.if ax == IDC_IZLEZI
invoke SendMessage, hWnd, WM_CLOSE, NULL, NULL
.endif
.endif
a postoi li neso kako winAPI programing ili toa se samo funkcii koi mozat da bidat povikani od C?Првиот код е во C, вториот е во асемблер (со HLL команди). И во двата кода се повикуваат Windows API функции.