| |||
|
|
Ненависти псто: Решил было навести порядок в своей проге и протестировать ее на предмет выравнивания, вскрытие показало: # include <stdio.h> # include <stdlib.h> void align_on () { asm("pushf\n" "orl $(1<<18),(%esp)\n" "popf"); } void align_off () { asm("pushf\n" "andl $(~(1<<18)),(%esp)\n" "popf"); } int main () { printf ("hello\n"); char s [20]; align_on (); printf ("%s\n", getenv ("PATH")); align_off (); printf ("hello %d\n", *(int *) &s[1]); return 0; } getenv валится при этом по bus error. Какого хрена стандартные функции-то на выравнивании падают? Это же вообще-то гря некий минимум приличий. Добавить комментарий: |
||||||||||||||