Подтвердить что ты не робот

Могу ли я написать программу в двоичном формате напрямую? Как я могу заставить компьютер выполнить его?

Я знаю, что это может показаться странным и искать проблемы, но я думаю, что опыт, который испытывали древние программисты, - это что-то интересное. Итак, как я могу выполнить программу, написанную только в двоичном формате? (Предположим, что я знаю, что я делаю и не использую сборку, конечно.)

Я просто хочу написать серию бит типа 111010111010101010101 и выполнить это. Итак, как я могу это сделать?

4b9b3361

Ответ 1

Используйте шестнадцатеричный редактор. Разумеется, вам нужно будет узнать соответствующий исполняемый формат для вашей операционной системы - если вы хотите использовать операционную систему... Я полагаю, вы всегда можете написать свой собственный загрузчик и просто запустить код прямо таким образом, если вы хочу получить все хардкор.

Я не думаю, что вы действительно будете испытывать то, что испытывали тогда программисты, хотя, во-первых, вы не будете использовать перфокарты, бумажную ленту и т.д. Для другого ваш контекст совершенно другой - вы знаете, что компьютеры, как сейчас, так что это будет болезненно примитивным для вас... тогда как тогда это было бы кровоточащим краем и захватывающим только на этих основаниях.

Ответ 2

Используйте шестнадцатеричный редактор, напишите свои биты и сохраните его как исполняемый файл (либо с расширением файла .exe в Windows, либо с помощью chmod a+x filename в Linux).

Проблема заключается в следующем: вам также придется записывать все специфичные для ОС вещи в двоичном формате, и вам придется иметь таблицу, которая переводится из кода ассемблера в двоичный файл.

Почему бы нет, если вы хотите испытать низкоуровневое программирование, дайте D.E. Кнут-ассемблер MMIX попробуйте?

Ответ 3

Это действительно зависит от используемой вами платформы. Но это не имеет значения, исходя из вашей предполагаемой цели. Самые ранние программисты современных компьютеров, как вы думаете о них, не программировались в двоичном формате - они запрограммированы в сборке.

Вы не научитесь ничего пытаться программировать в двоичном формате для конкретной операционной системы и конкретного типа процессора с помощью шестнадцатеричного редактора.

Если вы хотите узнать, как работали программисты предварительной сборки (с обычными двоичными данными), найдите Punch Cards.

.

Ответ 4

Используйте шестнадцатеричный редактор для создания файла, обязательно используйте формат, который понимает загрузчик вашей ОС, и дважды щелкните его.

Ответ 5


большинство ассемблеров (например, ассемблер MMIX см. www.mmix.cs.hm.edu) не заботятся, если вы пишете инструкции или данные.

Итак, вместо wirting

Main ADD $0,$0,3
     SUB $1,$0,4
     ...

вы можете написать

Main TETRA #21000003
     TETRA #25010004
     ...

Таким образом, вы можете собрать свою программу вручную, а затем ассемблер преобразует ее в форму, необходимую загрузчику. Затем вы выполните его. Обычно вы используете шестнадцатеричное нотация, а не двоичное, потому что отслеживать так много цифр сложно. Вы также можете использовать десятичные числа, но диаграммы, в которых указывается, какие команды имеют коды, обычно обозначаются шестнадцатеричной записью.

Удачи! Мне пришлось делать такие вещи, когда я начинал программировать компьютеры. Тогда все были рады иметь ассемблера или даже компилятора. Мартин

Ответ 6

Или он просто пишет вредоносный код. Я видел несколько смешных методов, которые используют AVR в качестве эмулятора клавиатуры, открывают какой-то простой текстовый редактор, записывают код в памяти AVR eeprom и транслируют его на "debug" (в системах Windows) и запускают его. Это хороший способ избежать некоторых ограничений тоже;)

Ответ 7

Я предполагаю, что, взаимодействуя напрямую с оборудованием, вы можете писать в двоичном формате. Чтобы перевернуть правильные бинарные биты, вы можете использовать намагниченную иглу на вашем диске. Или бабочки.