Моя задача - создать программу, генерирующую некоторый код сборки на основе ввода в stdin, и выводить машинный код в stdout.
Мой подход выглядит следующим образом:
#!/bin/sh
if [ ! -f ./lc ]; then
gcc lc.c -o lc
fi
./lc | nasm /dev/stdin -fbin -o /dev/stdout
LC читает изстандартный вывод и выводит ассемблерный код на стандартный вывод.Затем я передаю ассемблерный код в nasm, который читает из его стандартного ввода.Наконец, я хочу вывести машинный код в /dev/stdout.
Но я получаю такую ошибку:
nasm:fatal: unable to open output file `/dev/stdout'
Чтобы проверить, работает ли / dev / stdout, я проверил это так:
$ cat < /dev/stdin > /dev/stdout
test
test
Что я делаю не так?Я пытался sudoing, без эффекта.Есть ли переключатель командной строки для этого приложения для вывода кода на стандартный вывод?Лучше всего избегать создания любых временных исходных файлов и работать исключительно с потоками.