Комментарии 32
1 твит == 140 байт…
+1
НЛО прилетело и опубликовало эту надпись здесь
не 140 конечно, но ОЧЕНЬ мало
www.harbaum.org/till/nanovm/index.shtml
джава машина для контроллера atmega8, даже работает :)
www.harbaum.org/till/nanovm/index.shtml
джава машина для контроллера atmega8, даже работает :)
+2
Код с табуляцией соответствует 170-байтной программе, а не 160-байтной.
+1
Codegoooooooolf :)
Я еще вот такую задачку гольфил на с :)
Я еще вот такую задачку гольфил на с :)
+1
На www.muppetlabs.com/~breadbox/bf/ есть 166-байтный компилятор брейнфака.
0
[al@localhost ~]$ cat bf.c
s[999],*r=s,*d,c;main(a,b){char*v=1[d=b];for(;c=*v++%93;)for(b=c%7?a&&(c&17?c&1?(*r-=c-44):(r+=c-61):c&2?putchar(*r):(*r=getchar()),0):v;b&&c|a**r;v=d)main(!c,&b-1);d=v;}
[al@localhost ~]$ cc bf.c -o bf
bf.c:1: предупреждение: data definition has no type or storage class
bf.c: В функции ‘main’:
bf.c:1: предупреждение: в присваивании целое преобразуется в указатель без приведения типа
bf.c:1: предупреждение: при инициализации целое преобразуется в указатель без приведения типа
bf.c:1: предупреждение: несоответствие типов указатель/целое в условном выражении
bf.c:1: предупреждение: несоответствие типов указатель/целое в условном выражении
bf.c:1: предупреждение: несоответствие типов указатель/целое в условном выражении
bf.c:1: предупреждение: в присваивании указатель преобразуется в целое без приведения типа
bf.c:1: предупреждение: несовместимый тип указателя в присваивании
bf.c:1: предупреждение: несовместимый тип указателя в присваивании
[al@localhost ~]$ ./bf '++++++++++[>+++++++>++++++++++>+++>+.'
Ошибка сегментирования
s[999],*r=s,*d,c;main(a,b){char*v=1[d=b];for(;c=*v++%93;)for(b=c%7?a&&(c&17?c&1?(*r-=c-44):(r+=c-61):c&2?putchar(*r):(*r=getchar()),0):v;b&&c|a**r;v=d)main(!c,&b-1);d=v;}
[al@localhost ~]$ cc bf.c -o bf
bf.c:1: предупреждение: data definition has no type or storage class
bf.c: В функции ‘main’:
bf.c:1: предупреждение: в присваивании целое преобразуется в указатель без приведения типа
bf.c:1: предупреждение: при инициализации целое преобразуется в указатель без приведения типа
bf.c:1: предупреждение: несоответствие типов указатель/целое в условном выражении
bf.c:1: предупреждение: несоответствие типов указатель/целое в условном выражении
bf.c:1: предупреждение: несоответствие типов указатель/целое в условном выражении
bf.c:1: предупреждение: в присваивании указатель преобразуется в целое без приведения типа
bf.c:1: предупреждение: несовместимый тип указателя в присваивании
bf.c:1: предупреждение: несовместимый тип указателя в присваивании
[al@localhost ~]$ ./bf '++++++++++[>+++++++>++++++++++>+++>+.'
Ошибка сегментирования
0
zubchick~ % cc test.c -o bf 17:59
test.c:1: warning: data definition has no type or storage class
test.c: In function ‘main’:
test.c:1: warning: assignment makes pointer from integer without a cast
test.c:1: warning: initialization makes pointer from integer without a cast
test.c:1: warning: pointer/integer type mismatch in conditional expression
test.c:1: warning: pointer/integer type mismatch in conditional expression
test.c:1: warning: pointer/integer type mismatch in conditional expression
test.c:1: warning: assignment makes integer from pointer without a cast
test.c:1: warning: assignment from incompatible pointer type
test.c:1: warning: assignment from incompatible pointer type
zubchick~ % ./bf '++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.>.'
Hello World!
test.c:1: warning: data definition has no type or storage class
test.c: In function ‘main’:
test.c:1: warning: assignment makes pointer from integer without a cast
test.c:1: warning: initialization makes pointer from integer without a cast
test.c:1: warning: pointer/integer type mismatch in conditional expression
test.c:1: warning: pointer/integer type mismatch in conditional expression
test.c:1: warning: pointer/integer type mismatch in conditional expression
test.c:1: warning: assignment makes integer from pointer without a cast
test.c:1: warning: assignment from incompatible pointer type
test.c:1: warning: assignment from incompatible pointer type
zubchick~ % ./bf '++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.>.'
Hello World!
0
Видимо это не для x64…
+1
что означает число 93?
+2
Прошу прощения за оффтоп, что значит реализация ip-стека, как его вообще можно реализовать, это ведь просто иерархия протоколов, логическая. Не удивляйтесь глупому вопросу — гуглил, не помогло… Не могли бы вы объснить что тут к чему?
+2
Из контекста статьи получается, что IP = Instruction Pointer, соответственно IP-стек = стек вызова.
-4
Ну код-то посмотрите там 3 строчки. Конечно никакого стека там нет. Читает пакет из stdin, если ICMP — меняет адреса местами, ставит тип эхо и пишет в stdout.
0
Прошу прощения за оффтоп, что значит реализация ip-стека, как его вообще можно реализовать, это ведь просто иерархия протоколов, логическая.Это вы автора топика спрашиваете?
Нашли кого спросить.
По моим наблюдениям, alizar не является IT-специалистом и, к сожалению, часто постит то, что сам даже не до конца понимает. Увы.
Если вы посмотрите в оригинал статьи, на которую он сослался, то вам станет понятно, что программа twIP (с кодом на C в 139 символов):
— вешается на обработку входящих/исходящих потоков сетевого интерфейса;
— может только отвечать на ping (получать пакеты ICMP echo request и отдавать в ответ пакеты ICMP echo reply);
— не использует сокеты и оперирует голыми пакетами, извлекаемыми из потока;
— написана just for fun;
— в предложенном варианте работает только под FreeBSD, а для работы в Linux нужно делать некоторые добавления в код, которые делают код уже длиннее 140 символов.
0
Если не путаю, то самый маленький вирус был 47 байт, и 32 байта который портил файл (заражаемый корд затирался).
+1
Самый маленький вирус вот (вешает 9х намертво):
cli
jmp $
(это 2 байта в .com)
cli
jmp $
(это 2 байта в .com)
-2
НЛО прилетело и опубликовало эту надпись здесь
160 или 170 байт — это исходный код, а не сам интерпретатор!
Скомпилированный файл у меня получился 9053 байта — есть, над чем работать. Например, переписать на ассемблере под ДОС :)
Скомпилированный файл у меня получился 9053 байта — есть, над чем работать. Например, переписать на ассемблере под ДОС :)
+1
Зачем DOS, лучше под спектрум =)
(вечерком попробую)
(вечерком попробую)
+2
*Компилятор* bf, написанный на ассемблере. В откомпилированном виде занимает 170 байт.
www.muppetlabs.com/~breadbox/software/tiny/bf.asm.txt
~/tmp$ nasm -f bin -o bf bf.asm
~/tmp$ chmod +x bf
~/tmp$ ./bf < hello.b > hello
~/tmp$ chmod +x hello
~/tmp$ ./hello
Hello World!
www.muppetlabs.com/~breadbox/software/tiny/bf.asm.txt
~/tmp$ nasm -f bin -o bf bf.asm
~/tmp$ chmod +x bf
~/tmp$ ./bf < hello.b > hello
~/tmp$ chmod +x hello
~/tmp$ ./hello
Hello World!
0
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Интерпретатор Brainfuck размером 160 байт