Arhiva pentru noiembrie, 2007

Hello world!

noiembrie 15, 2007

Primul mesaj de pe blog nu are cum sa nu fie un “Hello World!”.

Majoritatea limbajelor de programare, cu care am lucrat, nu au un “Hello world!” prea sofisticat; asa ca voi da doar 2 exemple, in C, ceva mai interesante :

1) Well, hai sa nu mai punem compilatorul la munca sa-mi aseze in memorie string-ul :

int a, b, c, d;

a = 256 * 256 * 256 * ‘l’ + 256 * 256 * ‘l’ + 256 * ‘e’ + ‘H’;
b = 256 * 256 * 256 * ‘o’ + 256 * 256 * ‘w’ + 256 * ‘ ‘ + ‘o’;
c = 256 * 256 * 256 * ‘!’ + 256 * 256 * ‘d’ + 256 * ‘l’ + ‘r’;
d = 256 * ” + ‘\n’;

printf(“%s”, (char *) &a);

Dupa ce am scris asta, ma rog sa nu-mi rearanjeze variabilele si astfel sa afiseze cu totul altceva decat ce vreau eu.

2) Acum, ceva mai frumos :)

void hello_world()
{
printf(“Please do not print this !!!\n”);
printf(“Hello world!\n”);
}

Ok, trebuie sa ruleze doar al doilea printf, cum pot face asta ? Ne uitam in disassembly si facem asa :

void (*my_hello_world)(void) = (void(*)(void)) hello_world + 18;

my_hello_world();

Acestea fiind zise, va salut din primul meu post pe blog-ul personal :)