Pull to refresh
16K+
10
31
Rating
1
Subscribers
Send message

В заголовке моего ELF есть точка входа. Оказалось, её никто не читает

Level of difficultyMedium
Reading time10 min
Reach and readers4.3K

Три статьи я собирал файл и отдавал его эмулятору, ни разу в него не заглянув. Заглянул. Внутри два разных описания одних и тех же байтов, ответ на вопрос, откуда взялся адрес 0x80000000, и поле, которое я заполнял зря.

Ну, открываем!

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

Level of difficultyMedium
Reading time11 min
Reach and readers10K

Написал рекурсию тем же приёмом, что во второй статье, и программа повисла навсегда: возвращаться ей было некуда. Чиню, завожу стек и по дороге выясняю, что регистра sp в наборе команд нет вовсе. А потом урезаю стек до 128 байт, и сборка об этом не говорит ни слова.

Ломать второй раз!

Мой код терял бы 230 байт из 231. Чтобы это увидеть, пришлось патчить QEMU

Level of difficultyMedium
Reading time10 min
Reach and readers14K

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

Читатель arteast был прав.

Сел воспроизводить поломку. Собрал два варианта, свой и правильный, прогнал на строке в 231 байт. Вывод побайтово одинаковый. Замедлил линию до предела. Ничего не изменилось. Написал программу, которая смотрит, бывает ли передатчик занят хоть когда-нибудь. При выводе в консоль не бывает.

Моя ошибка внутри эмулятора не проявляется вообще. Проверить себя было нечем.

Пришлось чинить эмулятор.

Ну, чини!

Двенадцать символов, двадцать один байт: как я научил голый RISC-V говорить «Привет, мир!»

Level of difficultyMedium
Reading time12 min
Reach and readers9.4K

Без библиотек, без обвязок, без операционной системы под ногами. Реальный код на реальном железе — ну, почти реальном.
Пустая эмулируемая машина RISC-V, десяток строк ассемблера, и в терминале:
Сначала думал вывести «hello», как все.
Пусть будет «Привет, мир!»

Ну, привет!

История о том, как я флешку по воздуху прокинул

Level of difficultyEasy
Reading time5 min
Reach and readers38K

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

Какое решение?

Information

Rating
253-rd
Location
Москва, Москва и Московская обл., Россия
Date of birth
Registered
Activity