Ovako sto se tice koda može neko kratko objašnjenje/opis ,što radi itd.
Znat ce ovi koji se bave C/C++
Unaprijed puno hvala i bez nekih prepucavanja kao npr: ovo je lagano ,ovako onako
Samo trazim da neko objasni ako nije problem.
// for x8086 32 bit processor
#include <stdio.h>
char ft[] = "%s\n";
char play[] = "I play guitar";
int main( void )
{
__asm
{
mov eax, offset play
push eax
mov eax, offset ft
push eax
call printf
add esp,8
}
}
Eto ga
- +/- sve poruke
- ravni prikaz
- starije poruke gore
ovo ti je assembler i c++
ovo ti je assembler i c++
Po čemu je ovo c++? Koliko ja vidim ovo je čisti c, sa assamblerom.
C kod ti neću objašnjavati, samo assembly. Ukratko, to što vidiš pred sobom je način za pozivanje funkcije printf iz x86 assemblyja. Pa krenimo:
mov eax, offset play
Memorijsku adresu varijable "play" prebaci u eax registar.
push eax
Sadržaj eax registra stavi na stack.
mov eax, offset ft
Memorijsku adresu varijable "ft" prebaci u eax registar.
push eax
Sadržaj eax registra stavi na stack.
call printf
Pozovi funkciju "printf"
add esp,8
Zbroji vrijednost esp registra sa brojem 8 i rezultat pohrani u esp registar. Taj je registar zadužen za praćenje trenutne pozicije na stacku (stack pointer), tako da je ovo u biti vraćanje stack pointera u stanje u kojem je bio prije ova dva pusha (32 bitni broj je 4 bajta u memoriji, dva puta je pushano na stack - znači treba se vratiti za 8 bajta unatrag).
Za detalje prouči ovo.
P.S.
[RANT]
Ova izjava:
// for x8086 32 bit processor
Je glupost teških razmjera. 8086 je konkretan model iz linije x86 procesora, i radi se o 16 bitnom procesoru, a "x" u "x86" služi kao zamjenski znak jer su modeli išli: 8086, 80186, 80286, 80386, 80486... pa se jednostavno stavio "x" na znamenku koja se mijenjala i tako je nastao "x86". Staviti "x" ispred punog broja modela procesora samo pokazuje da netko tko je to pisao nije razmišljao previše...
Iz istog je razloga i posebna vrsta gluposti pisati x64 za 64 bitne procesore (umjesto x86-64), jer ne postoji arhitektura kodnog imena x64, ali što ćeš kad marketing tjera svoje.
[/RANT]
Puno hvala!