169 похожих чатов

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

наглядно.

https://www.youtube.com/watch?v=93PHxVpPLxA

43 ответов

66 просмотров

Офигеть!

почувствуй себя в поезде. Я бы поигрался с этой машинкой 🥹

тут нужша шутка, что чувак начинал его проектировать, когда в школу ходил

КТ315
Зачем?

зачем шутка?

КТ315
Зачем?

чтобы пошутить

А как ошибка компиляции выглядит

Alexey
А как ошибка компиляции выглядит

Что такое ошибка компиляции в данном случае? Это прямой перевод в машинные коды

Alexey
Вылет программы

Вылет программы и ошибка компиляции - совершенно разные вещи

Alexey
Вылет программы

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

Dimmu
не бывает такого , невалидный код ассемблер не заа...

То есть у тебя никогда не вылетала скомпилированная программа?

Alexey
То есть у тебя никогда не вылетала скомпилированна...

куда? если ее ОС не прибьет, она так и будет исполняться. на релейном компе ОС нет - она туда не влезет :)

Alexey
То есть у тебя никогда не вылетала скомпилированна...

для начала скажите что такое вылет программы? то что прога PF поймала это всецело вина разраба либо самой проги , либо ос

Mixail Frolov
для начала скажите что такое вылет программы? то ч...

Да я и не спорю, как вина разраба выглядит то на этом пк

Alexey
То есть у тебя никогда не вылетала скомпилированна...

В старых системах была команда HALT -- означает остановить процессор до перезагрузки. Если до HALT программа не доходила, то нужно было искать причину такого поведения. Это состояние можно было назвать infinite loop, бесконечный цикл.

Alexey
Да я и не спорю, как вина разраба выглядит то на э...

как и везде - ошибся, значит получи фигу вместо нужного

Alexey
Как нет*_*, а где он файл запустил?

посмотрите например пк микро-80, там вообще вручную данные в память пишутся, тумблерами

Mixail Frolov
посмотрите например пк микро-80, там вообще вручну...

Так в видео он же запустил прямо из операционки

Alexey
Так в видео он же запустил прямо из операционки

он залил бинарник лоадером в релейный комп

КТ315- Автор вопроса
Alexey
А как ошибка компиляции выглядит

Скорее всего, если код просто не туда прыгнет - попадётся неизвестная инструкция, и код перестанет исполняться, или если будет бесконечный цикл - так и будет щёлкать, висеть. Ничего страшного, с панельки можно остановить код, залить новый (исправленный), и всё нормально будет.

КТ315
Скорее всего, если код просто не туда прыгнет - по...

Неизвестная инструкция — это когда у тебя есть логика, чтобы детектить неизвестные инструкции. Даже в современном x86 некоторы комбинации префиксов и опкода могут исполняться, а спустя пару поколений стать невалидными. В простых процессорах (тот же 8086 взять) «невалидные» опкоды становятся алиасами похожих валидных, иногда с разными интересными спецэффектами.

КТ315- Автор вопроса
s54820
Неизвестная инструкция — это когда у тебя есть лог...

Я знаю, поэтому и говорю. Там в декодере по-любому есть логика определения неизвестной инструкции, она всегда и везде есть (наверное).

КТ315
Я знаю, поэтому и говорю. Там в декодере по-любому...

в продуманных системах неизвестные инструкции исполняются как nop-ы

КТ315- Автор вопроса
Dimmu
в продуманных системах неизвестные инструкции испо...

Это в "продуманных"? )) Это ненормально как раз, какие-то глупые системы. А если я хочу намеренно исключение процессора вызвать с неизвестной инструкцией, перехватить его и прыгнуть куда-то?

КТ315
Это в "продуманных"? )) Это ненормально как раз, к...

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

КТ315- Автор вопроса
Dimmu
ну вот исполняешь код программы и случайно на секц...

С чего ты взял, что секция данных исполнится? Про какую архиткетуру речь?

КТ315
С чего ты взял, что секция данных исполнится? Про ...

да про любую простейшую. микроконтроллер какой-нибудь

КТ315
Я знаю, поэтому и говорю. Там в декодере по-любому...

Вот я и говорю, что логика занимает место :) И декодер там скорее всего в виде логики: т.е., у тебя есть инструкции ON, OFF, ONCE — xxxxxx00/xxxxxx01/xxxxxx10 соответственно. Процесссор выбирает нужную логическими операциями (аппаратно, гейтами), а оставшийся xxxxxx11 становится одной из трёх предыдущих. Какой — зависит от того, как физически гейты соединены.

КТ315
Это в "продуманных"? )) Это ненормально как раз, к...

Для этого делают undefined opcode и обещают никогда не использовать эту комбинацию бит для настоящей инструкции.

КТ315- Автор вопроса
КТ315
Это что-то на ARM?

Да у всех есть в том или ином виде. ud2 например.

КТ315- Автор вопроса
КТ315
И что, она выполнится?

Нет, она гарантированно не выполнится. Т.е., среди всех существующих комбинаций байтов какие-то обязательно выполнятся (обещал мануал), какие-то могут выполниться или нет (недокументированные и/или не детектятся как инвалидные), и только несколько гарантированно не выполнятся (обещал мануал). Поэтому, если ты хочешь вызвать исключение #UD, ты используешь 0f 0b, а не 0f 19.

КТ315- Автор вопроса

Ну не исполнится ведь? Не знаю, как проверить - ОС то явно перехватит и исключение выдаст, эмулятору тоже нельзя доверять, а чисто в прошивку вшить FFFF и как-то отладить нет возможности. Но не сделает же x86 из этого "nop", а остановит исполнение?

КТ315
Ну не исполнится ведь? Не знаю, как проверить - ОС...

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

Похожие вопросы

Обсуждают сегодня

читать файл максимально быстро? странный вопрос))
zamtmn
53
тоесть, указав return eax, сгенерируется никому ненужная инструкция mov eax,eax ?
Aiwan \ (•◡•) / _bot
24
Приветствуем всех! Устали без проектов? Если вы программист и хотите получать стабильные заказы, компания Elif предлагает вам недельный курс по поиску проектов и их ведению. ...
Elif
1
А чего сейчас в моде вместо Error для эксепшенов? А то я тут внезапно узрел что он не рекомендуется :) У Try::Tiny какой-то совершенно ужасный синтаксис если надо конкретные э...
Denis F
19
а зачем этот вопрос для удаления из чата?
Mёdkinson Medvezhkin
63
Привет. Сразу скажу, что на C/C++/Rust я не пишу, но тем не менее возникла потребность дебага C/C++/Rust кода. Суть: есть серверное приложение, которое периодически ведёт себ...
ninekeem 🐳
4
Всем привет, после Си стоит учить плюсы или лучше на раст перейти?
Linus
8
всем привет! углубившись в плюсы и начав изучать реверсинг понял, что без асм'а никуда со своими высокоабстрактными представлениями начал изучать механизмы асма, и не совсем п...
9
или вы считаете муит дает знание?
супер_лох_3000 альфа версия
12
значить например он учился в СДУ то получается он особенный?)
Asets Serikov
11
Карта сайта