LINUX.ORG.RU

hello word без компилятора

 


4

3

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


 10e88 15000000 00000000 00000000 00000000  
 10e98 03000000 00000000 e80f0100 00000000  
 10ea8 02000000 00000000 60000000 00000000  
 10eb8 14000000 00000000 07000000 00000000

или так не получится?

Ответ на: комментарий от luke

ты в прошлый-то раз без OS запустил свой хеллоуворлд?

да. но я же компилировал. и создавал загрузучную дискету. а сейчас совсем другой подход.

Assembler
() автор топика
Ответ на: комментарий от luke

А есть эмулятор такого компуктера? Я вот только для БЭСМ-6 видел

Для старомодных микропроцессоров, у которых шины торчат наружу, соорудить подобную консоль – дело техники https://www.youtube.com/watch?v=Q5LjkL5b4n8

vM ★★
()
Ответ на: комментарий от vM

А dd Вы разве будете выполнять без ОС?

ну вы уже спрашиваете лишь бы спросить...

я создам файл.

file.img
в нем будут машиные инструкции. у меня ПК и ноут. беру ssd из ноута подключаю его через переходник в usb к КП на котором установлен LINUX. зануляю ssd и после записываю на него
 dd if=file.img of=/dev/ssd(тот самый).
и включаю ноут. на ssd не будет OC. там будут мои машинные инструции.

Assembler
() автор топика
Ответ на: комментарий от Assembler

Т.е. это упражнение не столько по программированию, сколько по развёртыванию на целевой машине без ОС кода, созданного на инструментальной машине, на которой работает линукс? И если бы целевая машина умела загружаться по сети, Вы бы могли загрузочный код выкладывать куда-то на TFTP?

vM ★★
()
Ответ на: комментарий от vM

это упражнение не столько по программированию, сколько по развёртыванию...

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

Assembler
() автор топика
Ответ на: комментарий от Assembler

ребята, мы 25 раз одно и тоже. получается что программирует компилятор а не я. правильно ли это или нет, но в учебных целях это просто необходимо почувствовать как работает код на железе.

Ты не почувствуешь. Потому что процессор выполняет не то, что ты пишешь в машинных кодах. Там внутри еще как минимум один слой, хакер Нео.

anonymous
()
Ответ на: комментарий от Assembler

это попытка научиться писать машинными инструкциями и без компилятора.

А что не так с компилятором? Или ты из секты тех, кто hello world напишет в машинных кодах лучше, чем компилятор, но ничего сложнее родить не может?

А тебя не пугает, что собрать комп типа твоего с нуля не может почти ни одно государство в мире? Где ты собрался запускать свои божественные программы лет через 5, когда у тебя школа закончится?

anonymous
()
Ответ на: комментарий от Assembler

да. но я же компилировал. и создавал загрузучную дискету. а сейчас совсем другой подход.

А что ты 4 месяца между двумя подходами делал? Уже можно было ядерные модули научиться писать или свой компилятор забабахать… А ты не осилил формат ELF и фанатично пытаешься сотворить какую-то дичь вместо попыток разобраться.

anonymous
()

Короче, это еще один метапрог. Тот тоже только готовые куски от советчиков с ЛОРа компоновал, сам документацию читать не умеет. У одного неприятие текста, у другого - компиляторов.

anonymous
()

И оба спустя два года не могут написать код, который развернул бы строку. Хотя метапрог наверно быстрее с этим справится, чем топикстартер.

anonymous
()
Ответ на: комментарий от anonymous

А ты не осилил формат ELF

вам видней.

уже можно было ядерные модули научиться писать

в ядро я не полезу. пусть этим занимаются настоящие специалисты. это их заработок. мне же вот, hello world в машинных кодах. я уже все объяснил. просто вы не читали видимо.

Assembler
() автор топика
Ответ на: комментарий от anonymous

И оба спустя два года не могут написать код

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

Assembler
() автор топика
Ответ на: комментарий от Assembler

скоро без знания ЯП ты даже унитазом воспользоваться не сможешь

Зачем тебе унитаз, если ты собрался напрямую врезаться в канализацию?

anonymous
()
Ответ на: комментарий от Assembler

компьютерная граммотность сегодня, это не роскошь, а не обходимость.

И как тебе помогут знания, как вывести на экран два слова в 16-битном режиме? Ты хоть за пределы ограничения в 510 байт вылезти потом осилишь?

anonymous
()
Ответ на: комментарий от anonymous

я перефразирую себя)))) уважаемый анонаймус, вы сами придумываете такие меткие вопросы или вам помогают ?

Assembler
() автор топика
Ответ на: комментарий от Assembler

а ты свои аналогии с унитазами из своего профессионального опыта сантехника черпаешь?

anonymous
()
Ответ на: комментарий от anonymous

профессионального опыта сантехника

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

Assembler
() автор топика
Ответ на: комментарий от Assembler

бесспорно. Но подумай о длине одной итерации. С эмулятором это 1 секунда, с реальным железом –минуты. А итераций этих тебе предстоит сотни если не тысячи, учитывая примитивность выбранных инструментов. И это при условии что ты в процессе не запорешь что-нибудь безвозвратно.

phoenix ★★★★
()
Ответ на: комментарий от Assembler

ребята, мы 25 раз одно и тоже. получается что программирует компилятор а не я

реши проблему кардинально: напиши свой собственный ассемблятор. потом перепиши его же на нём же, а потом уже пиши что хочешь. - так и получится, что ты всё написал сам..

а то, если углубляться, то тебе не только писать надо, но и железо самостоятельно переизобретать

anonymous
()
Ответ на: комментарий от anonymous

а то, если углубляться, то тебе не только писать надо, но и железо самостоятельно переизобретать

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

anonymous
()
Ответ на: комментарий от Assembler

Компилятор ничего не знает об алгоритмах, юродивый. Он занимается рутинной работой за тебя. Как уже писали, никагого понимания, как реально что-то там работает на железе это тебе не даст. Настоящего оригинального X86 процессора уже нет несколько десятилетий.

anonymous
()
Ответ на: комментарий от anonymous

Настоящего оригинального X86

тут я не понял. но все равно спасибо

Assembler
() автор топика
Ответ на: комментарий от anonymous

реши проблему кардинально

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

Assembler
() автор топика
Ответ на: комментарий от Assembler

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

То есть ты считаешь, что сейчас в 2021 можно в одиночку, не опираясь на чужие наработки, в машинных кодах и без каких-либо знаний написать что-то полезное?

Более того, у большинства пользователей вообще нет техники с процессором x86.

anonymous
()
Ответ на: комментарий от anonymous

То есть ты считаешь,что в 2021 можно в машинных кодах написать что-то полезное?

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

Assembler
() автор топика
Ответ на: комментарий от Assembler

это база

Какая же это база? Ты просто под готовый проц пишешь примитивщину, которая ничего полезного не делает и ничему не учит. Внутри процессора - микрокод и то, что ты пишешь, процессор никогда не исполняет, он твои машинные коды конвертирует в совершенно другие, к которым у тебя нет доступа («за тебя программирует» в твоей терминологии). Тратишь время на бесполезное дрочево. Поковыряйся в схемотехнике, освой дискретную логику. Или хотя бы любой мэйнстримовый язык программирования осиль на уровне хотя бы зеленого новичка.

anonymous
()
Ответ на: комментарий от Assembler

можно ли написать что-то самому для себя в 2021 году , то да, я думаю, что можно. ну или хотя бы попытаться это сделать.

Для начала надо придумать достойную задачу. Вывести на экран hello world, записав в mbr спертый из сети говнокод не сильно лучше, чем alert’ами в браузере баловаться на джаваскрипте. Это не программирование.

anonymous
()
Ответ на: комментарий от Assembler

и микроконтроллеры не исполняют код что пишет пишуший его?

Вероятно только на FPGA можно сделать так, чтобы исполнялся исключительно код, который написал автор. Микроконтроллеры зачастую тоже всякие сопроцессоры содержат, закрытые никому не известно как работающие блоки и т.д. Как оно внутри работает, тебе никто не расскажет. Главное, чтобы высокоуровневые команды в соответствии с документацией. А для всяких эльбрусов тебе даже систему команд пожамкать не дадут.

Короче, ты куда-то не туда полез. Так не научишься.

anonymous
()
Ответ на: комментарий от anonymous

нормально все) если честно, то и не надеялся. ладно, тему уже закрыта. больше тут обсуждать нечего.

Assembler
() автор топика
Ответ на: комментарий от Assembler

ладно, тему уже закрыта. больше тут обсуждать нечего.

Не осилил что ли?

anonymous
()
Ответ на: комментарий от Binkledum
Делириум, Делириум
компрессорный завод
люблю тебя Делириум
четыре раза в год ...

Владимир 321

anonymous
()
Ответ на: комментарий от Assembler

то есть я хочу написать программку в машинных кодах, и запистить с помощью bios.

А почему именно в машиных кодах,а не на ассемблере?
Если у тебя параноя то можно просто потом взять полученный бинарник и посмотреть, если есть что непонятное то записать вместо него вывод сообщения на экран и уход в очень долгое ожидание.
Ну или просто записать нулями.

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

torvn77 ★★★★★
()
Последнее исправление: torvn77 (всего исправлений: 2)
Ответ на: комментарий от EXL

А ты сделай программу которое выводит что-то осмысленное меньше по размеру, чем у того автора.

echo Hi, World!

точно короче, чем у автора.

Бесхитростный грязный линуксовый ELF для x64 всё равно получился чуть короче, хоть заголовки у него длиннее:

xxd -r -p  by << BYE
7f454c46020101034279652c61736d0a02003e0001000000280008000000
00003c00000000000000b208b001be080008000f05cc4000380001004000
010000000500000000000000000000000000080000000000000040000000
00007800000000000000c806000000000000001000000000000000000000
BYE

А что-нибудь более осмысленное может получиться ещё короче

vM ★★
()
Ответ на: комментарий от Assembler

нужно мне написать для машины на которой нет ни ОС ни компилятора и bios тоже видимо будет отсутствовать. так в чем и на чем писать?

Подменить BIOS на собственный можно только на старых материнках, потом в чипсет или процессор стали добавлять проверку его цифровой подписи.

Ну а так изучай проект libreboot (coreboot содержит блобы и тебе с твоими заявками как я понимаю не подойдёт).

torvn77 ★★★★★
()
Ответ на: комментарий от Assembler

разве не здесь обвиняли начинающих программистов в том что они не понимают сути, что за них все делают компиляторы и среды разработки.

Для не надо писать в машинных кодах, достаточно изучать книжки по архитектуре ЦПУ, нарисовать частичную схему собственного процессора, ну и программировать на ассемблере, в том числе вызывая из ассемблера функции экспортируемые ядром и библиотеками.

torvn77 ★★★★★
()
Ответ на: комментарий от torvn77

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

vM ★★
()
Ответ на: комментарий от torvn77

А почему именно в машиных кодах,а не на ассемблере?

hello word без компилятора (комментарий) потому что без помощи компилятора

Если у тебя параноя

да просто в качестве лучшего понимания сути процесса программирования изучаю

Assembler
() автор топика
Ответ на: комментарий от Assembler

да просто в качестве лучшего понимания сути процесса программирования изучаю

Для этого лучше:

изучать книжки по архитектуре ЦПУ, нарисовать частичную схему собственного процессора

Частичную чтобы не рисовать и так понятную рутину, но схему как концепт надо придумать самому.

Нуи шину для подключения плат расширения и свои схемы контроллеров прерываний и DMA тоже сделай.

torvn77 ★★★★★
()
Последнее исправление: torvn77 (всего исправлений: 4)
Ответ на: комментарий от Assembler

потому как именно компиляция переводит ЯП в машинный код.

Нет, код с высокоуровнево языка переводится в ассемблер и только потом ассемблер компилируется в машинный.

torvn77 ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.