Обновить
-7

Пользователь

Отправить сообщение

Это все хорошо, но почему именно switch case?

if/else тоже хорошо, чем if/else не устроило?

ПОЕСНИТЕЛЬНАЯ БРИГАДА:

Смысл статьи - максимально быстро и незапарно получить полные права.

Чем плох memset?

В исходнике нет функции bf_shell вообще, там все действия происходят в main.

И почему возврат int чем-то может не устраивать?

Перед чтением файла программа узнает размер файла и создаёт массив который соответствует размеру файла и только потом файл считается в массив.

Почему тогда gcc - компилятор? Если фактически он транспилятор из C в ассемблер?

Этот интерпретатор - очень упрощённый пример, поэтому я не стал заморачиваться, хотя можно было транслировать код bf в код C или ассемблера, а потом компилировать, но зто уже был бы компилятор а не интерпретатор.

Все компилируется, вот исходник

Число 30000 взято из всех стандартных интерпретаторов bf.

char plus = "+" ; работать не будет, потому что тип данных "" это указатель.

Для примера попробуйте скомпилировать и запустить такой код

#include <studio.h>
int main()
{
  char test = "i";
  printf("%c\n", test);
  return 0;
}

Он выведет только перевод строки, т.к в переменную test записан указатель на символ "i".

Здесь полностью согласен, но данный пример интерпретатор не предназначен для ввода слишком длинной строки, и писался за 5 минут, поэтому этот недочёт не был замечен.

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность

Специализация

Десктоп разработчик, Фулстек разработчик
Python
Linux
C
C++
Bash
Assembler
Тестирование на проникновение
Обратная разработка
Ruby