[linux] Announce : linux BA sesna

Dado Jan dado na slovkaufring.sk
Čtvrtek Září 7 15:29:44 CEST 2000


> #include <stdio.h>
> int main()
> {
>   int x[] = { 7, -3, 5, 112, 0xc3c033 };
>   char *z = x, **y = &z;
>   
>   printf("%d %d %d %d %s\n", y[0][7], x[3], z, z[4], ((int(*)())(z+16))());
> }
> 
> Ulohou je bez kompilacie urcit, aky bude vystup programu.
> 
> Nite

y[0][7] == z[7] == ((char *)x)[7] == posledny_byte((int)(-3)) ==>
		Je system low_endian? 

x[3] == 112

z == x - ale to je predpokladam dost zavisle na systeme a druhu binarky
	/* mylim sa??? Ak ano rad by som pocul ine:) */

z[4] == ((char *)x)[4] == prvy_byte((int(-3)) ==> Je system low_endian?

((int(*)())(z + 16))() == volanie funkcie s kodom x[4], co je uz skutocne
az moc zavisle, tentokrat na instrukcnej sade procesora. Zeby sme to
skusili?
x[4] == 0xc3c033
instrukcie 33 0c c3 00
No, ale tento krat uz som si pomohol = __asm xor eax, eax __asm ret
cize eax je 0, t.j.:

Teraz tie %d:

FD/FF (-1)/(-3) 	Low_endian/High_endian
112
nejake blbe cislo
FF/FD (-3)/(-1)		-II-

A %s:
0 == (char *)0 == "(null)"


Nuf....

0xcaff :)
				Jano







Další informace o konferenci linux