Aiwan \ (•◡•) / _bot
Ида на Винде или я не про то думаю
у мя и на линухе работает норм, скачал, установил, и в бой. только вот перевода нет
Aiwan \ (•◡•) / _bot
Hello, World! 🎄
Ребят, а какой калькулятор использовать чтоб считать такие числа? Желательно с переводом в 10 и 2 системы. os: Linux
акуадё
интересно, спасибо
Hello, World! 🎄
Спасибо
Hello, World! 🎄
Hello, World! 🎄
Я наконец-то начал учить ассемблер. Не подскажите сколько обычно инструкций используете? mov, add и т.д, их нужно все выучить? (Думаю, что да, глупый вопрос, наверно лучше было бы спросить насколько часто те или иные инструкции используются)
акуадё
акуадё
Hello, World! 🎄
Hello, World! 🎄
Наверно лучше задать такой вопрос, как правильно читать ассемблерный код? Чтобы легче читать к каждому фрагменту добавлять комментарий даже если код простой или лучше комментировать все вещи.
Hello, World! 🎄
Наверно лучше задать такой вопрос, как правильно читать ассемблерный код? Чтобы легче читать к каждому фрагменту добавлять комментарий даже если код простой или лучше комментировать все вещи.
И еще один глупый вопрос, что можно такое написать, чтобы начать лучше понимать ассемблер? Что-то вроде калькулятора, числа Фибоначчи? (т.е какие программы обычно писали когда начинали только изучать ассемблер).
889
Многопоточный архиватор с графической оболочкой. Напишешь на ассемблере, думаю, будешь знать его на отлично :)
Покажи пример, я имею в виду именно графики на асме для данной задачи, или ты про дос? Или про сторонние либы?
Hello, World! 🎄
Многопоточный архиватор с графической оболочкой. Напишешь на ассемблере, думаю, будешь знать его на отлично :)
Это уже дальше, я пока что калькулятор еще не сделал, а ты мне про архиватор говоришь
889
Гугли: сказки дядюшки Римуса о x86 :)
Хех, я думал это шутка, но загуглил)))
Hello, World! 🎄
Aiwan \ (•◡•) / _bot
Наверно лучше задать такой вопрос, как правильно читать ассемблерный код? Чтобы легче читать к каждому фрагменту добавлять комментарий даже если код простой или лучше комментировать все вещи.
коментировать все не обязательно, потому что основная часть кода - типична. а вот если что то алгоритмическое или применяются какие то хаки, "нестандарты" - лучше коментировать
s54820
коментировать все не обязательно, потому что основная часть кода - типична. а вот если что то алгоритмическое или применяются какие то хаки, "нестандарты" - лучше коментировать
Комментировать обязательно. Читая чужой ассемблерный код ты обычно можешь сказать, что он делает, но не можешь сказать, зачем. Взять тот же фасм. Томаш очень любит магические числа, и нужно серьёзно посидеть с отладчиком, чтобы понять, что такое странное читается по [ebp+9], и какие конкретно флаги проверяет test [flags],0fh (примеры выдуманные, если что).
s54820
это попадает под категорию нетипично, нестандарт и алгоритмическое
А что типично? Вызовы Windows API и копирование строк?
Aiwan \ (•◡•) / _bot
думаю нет необходимости писать коменты по коду стандарного создания окна в винде
Aiwan \ (•◡•) / _bot
Aiwan \ (•◡•) / _bot
#book Йо Ван Гуй Программирование на ассемблере. От начального уровня до профессионального использования AVX. 2021 NASM
Aiwan \ (•◡•) / _bot
#book Даниэль Куссвюрм Профессиональное программирование на ассемблере х64 с расширениями AVX, AVX2 и AVX-512. 2021 MASM
Hello, World! 🎄
напиши змейку в mbr-е
Это те самые 512 байт? Точнее 510 байт для кода, т.к там dw 0xaa55 занимает 2 байта.
Hello, World! 🎄
mov al, [bx] cmp al, 0 ; Работает cmp [bx], 0 ; Ошибка cmp не может получить значение по адресу? Если записать в регистр al, то работает.
Hello, World! 🎄
Вместо загрузчика зачем-то написал простой shell который еще не принимает команды
Hello, World! 🎄
Вместо загрузчика зачем-то написал простой shell который еще не принимает команды
Насчет вывода можно было написать код который выводит заданный текст, вместо того, чтобы каждый символ вручную в al записывать, но не вижу смысла, насколько я понял мне нужно написать загрузчик, а потом уже делать подобные вещи + там переход в защищенный режим и код будет выглядет по другому.
Eugene
Это те самые 512 байт? Точнее 510 байт для кода, т.к там dw 0xaa55 занимает 2 байта.
Вообще 446, чтоб не рушить partition table. Попробуй мою прогу для установки MBR (может сохранять pt): https://github.com/jin-x/mbrset (бинари: xk7.ru/mbrset)
Eugene
#book Йо Ван Гуй Программирование на ассемблере. От начального уровня до профессионального использования AVX. 2021 NASM
Свежачок, надо глянуть и добавить в подборку. Вообще кто книги читает на асму? Какие книги реально классные? Желательно современные тоже.
Eugene
Не надо 100500 штук. Надо штук 5, но лучшие. Чисто по асму. Ну и на смежные темы можно допом.
Eugene
Я думал что 512 - byte 0xaa55 = 510, не знал что 446 всего под код в MBR
Ну можно 510, но у тебя диск определяется не будет тогда.
Hello, World! 🎄
Ну можно 510, но у тебя диск определяется не будет тогда.
Да, мне все 510 не нужно, т.к мне в MBR только загрузчик написать, я на ассемблере вчера только начал что-то писать (До этого пытался, но не уходил дальше вывода строки на Linux ELF64).
Hello, World! 🎄
Поэтому, я сейчас просто сижу и читаю что какая инструкция делает, oswiki читаю (пытаюсь понять что там написано).
disba1ancer
Я думал что 512 - byte 0xaa55 = 510, не знал что 446 всего под код в MBR
по факту ещё меньше из-за наркоманских биосов, которые вместо запуска загрузчика пытаются парсить разделы или ожидают структуры данных FAT из-за чего выпадает место занимаемое заголовком FAT
Hello, World! 🎄
У меня UEFI, для BIOS пишу, т.к материалов больше. А вообще я хочу, чтоб загрузчик для UEFI был.
Eugene
Есть такая тема, когда грузишься с USB, в биосе можно указать режим HDD (первый сектор будет рассматриваться как MBR) или FDD (первый будет рассматриваться как boot sector). Также может быть автоматический режим. Так вот, в астматическом режиме (ну и в режиме FDD) при испорченном partition table БИОС затирает в загрузчике некоторые байты (1C..1F и 24h вроде), в котором может находится твой код.
Hello, World! 🎄
c uefi сложнее
Я надеюсь, что код который я напишу будет совместим с uefi, т.е только загрузчик переписать, а остальное также будет.
Eugene
я вообще не понимаю нафига эти режимы, грузи бутсектор и выноси мозг
Как зачем? Бутсектор и MBR-сектор имеют разную структуру.
disba1ancer
Не понял. Подробнее, плиз.
читал на осдев вики что-то такое и сам в одном загрузчике видел, что байты где часто размещены заголовки FAT занулены и не используются
Eugene
Может, ты хочешь образ харда накатать или флоппи?
disba1ancer
Может, ты хочешь образ харда накатать или флоппи?
биосу какая разница? ему должно быть глубоко плевать на разметку диска, это уже ответственность самого загрузчика
disba1ancer
Так, это не MBR уже.
возможно, это делается для универсальности образов
Eugene
биосу какая разница? ему должно быть глубоко плевать на разметку диска, это уже ответственность самого загрузчика
Не совсем. Там есть поля, которые нужно выставить корректно. Что-то типа кол-ва зарезервированных секторов, номер диска (точно сейчас не помню). Иначе не будет работать корректно.
disba1ancer
Я так понимаю в 1 секторе нужно написать загрузчик других секторов и jmp туда, в которых уже будет код вторичного загрузчика, получение нужной информации и вызов функции ядра (передать управление ядру).
в этом первом секторе обычно находится загрузчик, который проходит по таблице разделов в поиске активного, и грузит первый сектор найденного раздела
Hello, World! 🎄
в этом первом секторе обычно находится загрузчик, который проходит по таблице разделов в поиске активного, и грузит первый сектор найденного раздела
Т.е нужно просто найти раздел с кодом вторичного загрузчика и перейти туда, а там уже будет больше места под код?
disba1ancer
Т.е нужно просто найти раздел с кодом вторичного загрузчика и перейти туда, а там уже будет больше места под код?
место уже зависит от файловой системы, и сам загрузчик уже заточен под конкретную ФС
Hello, World! 🎄
Я думал, что там тоже самое что в первичном загрузчике, только больше места под код и больше полезной информации можно получить и перейти уже к ядру, а в ядре уже файловая система реализована (и то не сразу)
disba1ancer
в некоторых файловых системах, этот загрузчик просто ищет специальный служебный файл, который не видно даже из под оси, в котором лежит уже нормальный загрузчик ядра
disba1ancer
Я думал, что там тоже самое что в первичном загрузчике, только больше места под код и больше полезной информации можно получить и перейти уже к ядру, а в ядре уже файловая система реализована (и то не сразу)
в винде первый сектор раздела ищет файл $BOOT в MFT и передаёт ему управление, он уже выполняет остальные действия, в линуксе подобный механизм тоже возможен, но я не видел чтобы кто-то заморачивался над этим, обычно накатывают GRUB и всё
Hello, World! 🎄
в винде первый сектор раздела ищет файл $BOOT в MFT и передаёт ему управление, он уже выполняет остальные действия, в линуксе подобный механизм тоже возможен, но я не видел чтобы кто-то заморачивался над этим, обычно накатывают GRUB и всё
У меня GRUB используется хост системой, но при написании ос, я хотел все с нуля писать (да, сложно пока, что), чтобы попытатся что-то понять, как работает загрузчик, как он вызывает функцию ядра и т.д. На ассемблере только щас начал писать, oswiki читаю. Не знаю бесполезным ли делом занимаюсь, но желание что-то простое написать есть.
Hello, World! 🎄
В общем, я лучше пойду продолжу читать oswiki, чтоб глупые вопросы не задавать.
disba1ancer
У меня GRUB используется хост системой, но при написании ос, я хотел все с нуля писать (да, сложно пока, что), чтобы попытатся что-то понять, как работает загрузчик, как он вызывает функцию ядра и т.д. На ассемблере только щас начал писать, oswiki читаю. Не знаю бесполезным ли делом занимаюсь, но желание что-то простое написать есть.
вот, у меня тут загрузчики для GPT, они работают под Legacy BIOS, но с GPT разделами, там же загрузчик для ext2, но только сама PBR, тот файл который грузится загрузчиком в отдельной репе у меня и я над ним ещё работаю https://github.com/disba1ancer/gptldrs
disba1ancer
В ассемблере есть структуры? :\
это фасм там дофига всего можно сделать
Hello, World! 🎄
это фасм там дофига всего можно сделать
Я как раз на fasm давно хотел попытатся, что-то написать, открыл урок, написал вывод символов и закрыл. Сейчас на nasm пишу.
disba1ancer
я сейчас пишу загрузку ELF файлов, но это уже не на чистом асме
Hello, World! 🎄
я сейчас пишу загрузку ELF файлов, но это уже не на чистом асме
Ты ос пишешь? У тебя ELF файлы совместимы только со своей ос?
disba1ancer
Ты ос пишешь? У тебя ELF файлы совместимы только со своей ос?
у меня только один тестовый ELF файл с циклом, написанный на фасме, так что о чём-то конкретном говорить ещё рано, а вообще в отсутствии совместимости не вижу смысла
disba1ancer
да с большИИми перерывами
Hello, World! 🎄
Понял, спасибо за ответы
Aiwan \ (•◡•) / _bot
Ребят, а какой калькулятор использовать чтоб считать такие числа? Желательно с переводом в 10 и 2 системы. os: Linux
а тебе это случаем не для того чтоб вычислять размер оставшегося места от 512 байт?