суббота, 2 июля 2011 г.

Об особенности работы интерпретатора cmd

В процессе обработки пакетного файла интерпретатор cmd читает строку с командой необходимую выполнить, выполняет ее и потом читает следующую строку. При это постоянно происходит открытие и закрытие исполняемого командного файла.
Данная особенность позволяет делать самомодифицирующиеся батники. Небольшой пример.
@echo off
set a=
:m1
if "%a%"=="exit " goto :eof
echo echo executing adding code >>%0
echo set a=exit >>%0
echo goto :m1 >>%0
rem здесь будут добавлены новые команды.


пятница, 1 июля 2011 г.

Об оптимизации скорости работы bat-файлов

В ходе работы над интерпретатором Brainfuck было замечено постоянное порождение дочерних процессов командного процессора cmd. Да и общая скорость работы небольшая. Все дело в вызове функции call.

среда, 29 июня 2011 г.

Интерпретатор Brainfuck на BAT

Простота языка Brainfuck порождает множество реализаций его исполнения http://rosettacode.org/wiki/Execute_Brain****.  Есть вариант на Bash и даже на самом Brainfuck. Мне показалось, что несправедливо обойти еще один командный процессор. А именно командные файлы семейства WindowsNT, они же батники. При написании данного интерпретатора была поставлена цель реализовать всё только на встроенном «языке» консоли.