Vladimir
Откуда такая инфа? Что BIOS не должен проверять сигнатуру первого сектора? Есть пруфы?
Если у первых досов этой сигнатуры не было, то как они грузились?
Vladimir
На некоторых матерях и сейчас не проверяют, стопудняк.
­
Это часть системы загрузки, обозначающий, что данные находящиеся в этом секторе — код, который надо выполнить! Сигнатура не относится к дос, фс, ебучиму майкрософту или ещё чему, это ебучий маркер обозначающий загружаемость нулевого мать его сектора диска! Или ты думаешь, что если блять на компе установлен линукс или фряха в легаси режиме, то этой метки не будет? Так я тебя удивлю блять! БУДЕТ!
Vladimir
И сигнатура, и маркер 0x80 в нужном месте фейковой таблицы разделов будет как раз для удовлетворения китайских биосов, в той же фряхе, стоящей на цельном диске
Vladimir
Это обычный костыль
­
Пиздец
Vladimir
В 1981 году про MBR слыхом не слыхивали, есливчо
­
BIOS (до MBR) Править • BIOS проводит начальную инициализацию оборудования (POST). • BIOS определяет, с какого устройства производить дальнейшую загрузку: дискета, флеш-накопитель, жёсткий диск и т. д. (выбор устройства зависит от версии и от настроек BIOS) [в данном описании рассматривается только случай загрузки с жёсткого диска]. • BIOS считывает один сектор (512 байт), то есть непосредственно MBR, который находится по адресу: «цилиндр 0, головка 0, сектор 1»[a], и помещает его в область памяти по физическому адресу 0x7C00. • BIOS проверяет, что этот сектор оканчивается сигнатурой 0АА55h (байты 55h,0AAh). [если это не так, то управление возвращается обратно в BIOS]. • BIOS передаёт управление по физическому адресу 0x7C00 (то есть сектору MBR), предварительно записав в регистр DL номер диска, с которого этот сектор считан. Для первого жёсткого диска это значение будет равно 80h (128 в десятичной системе), для дисковода A: равно 0. Кроме того, Plug-n-Play BIOS может записать в регистры ES:DI указатель на структуру «$PnP».
Aiwan \ (•◡•) / _bot
BIOS (до MBR) Править • BIOS проводит начальную инициализацию оборудования (POST). • BIOS определяет, с какого устройства производить дальнейшую загрузку: дискета, флеш-накопитель, жёсткий диск и т. д. (выбор устройства зависит от версии и от настроек BIOS) [в данном описании рассматривается только случай загрузки с жёсткого диска]. • BIOS считывает один сектор (512 байт), то есть непосредственно MBR, который находится по адресу: «цилиндр 0, головка 0, сектор 1»[a], и помещает его в область памяти по физическому адресу 0x7C00. • BIOS проверяет, что этот сектор оканчивается сигнатурой 0АА55h (байты 55h,0AAh). [если это не так, то управление возвращается обратно в BIOS]. • BIOS передаёт управление по физическому адресу 0x7C00 (то есть сектору MBR), предварительно записав в регистр DL номер диска, с которого этот сектор считан. Для первого жёсткого диска это значение будет равно 80h (128 в десятичной системе), для дисковода A: равно 0. Кроме того, Plug-n-Play BIOS может записать в регистры ES:DI указатель на структуру «$PnP».
значит сначало читает, а потом проверяет на аа55
Eugene
BIOS (до MBR) Править • BIOS проводит начальную инициализацию оборудования (POST). • BIOS определяет, с какого устройства производить дальнейшую загрузку: дискета, флеш-накопитель, жёсткий диск и т. д. (выбор устройства зависит от версии и от настроек BIOS) [в данном описании рассматривается только случай загрузки с жёсткого диска]. • BIOS считывает один сектор (512 байт), то есть непосредственно MBR, который находится по адресу: «цилиндр 0, головка 0, сектор 1»[a], и помещает его в область памяти по физическому адресу 0x7C00. • BIOS проверяет, что этот сектор оканчивается сигнатурой 0АА55h (байты 55h,0AAh). [если это не так, то управление возвращается обратно в BIOS]. • BIOS передаёт управление по физическому адресу 0x7C00 (то есть сектору MBR), предварительно записав в регистр DL номер диска, с которого этот сектор считан. Для первого жёсткого диска это значение будет равно 80h (128 в десятичной системе), для дисковода A: равно 0. Кроме того, Plug-n-Play BIOS может записать в регистры ES:DI указатель на структуру «$PnP».
Чел говорят, что эта метка была не всегда. Вот и всё. И что некоторые биосы и сейчас кладут на эту метку. Вполне можно такое допустить.
Eugene
Но это скорее исключение.
s54820
Вы лучше скажите, что BIOS-то эмулирует, когда бутсектор патчит — FDD или HDD?
Eugene
Вы лучше скажите, что BIOS-то эмулирует, когда бутсектор патчит — FDD или HDD?
В некоторых биосах есть выбор: USB-HDD и USB-FDD. У меня нет, значит он умеет оба. По большому счёту, ему должно быть пофиг. А почему работало на VMware, QEMU, Bochs? Потому что там это был Floppy диск или хард, а не USB. Надо попробовать USB, если там можно с неё грузиться.
s54820
В некоторых биосах есть выбор: USB-HDD и USB-FDD. У меня нет, значит он умеет оба. По большому счёту, ему должно быть пофиг. А почему работало на VMware, QEMU, Bochs? Потому что там это был Floppy диск или хард, а не USB. Надо попробовать USB, если там можно с неё грузиться.
Тут вот википедия намекает, что это для твоего же блага: «…Many MBRs were coded to ignore the DL value and work with a hard-wired value (normally 80hex), anyway». Кто им мешает в int 13h эмулировать 0x80 так же, как они эмулируют 0x00 — не ясно.
Anonymous
mov dx,page1 mov [tablepage1+2],dx shl word [tablepage1+2],4 mov eax,tablepage1 mov cr3,eax mov eax,cr0 bts eax,31 mov cr0,eax mov word [0x000500],0x0f31 mov word [0x000401],0x0f32 mov word [0x000302],0x0f33 jmp $ msg1 db '[*] MBR in Protected Mode',0x0a,'[*] System Halt' page1 db 000000011b,0x00,0x00,0x70 page2 db 000000011b,0x00,0x40,0x1f page3 db 000000011b,0x00,0x28,0x23 page4 db 000000011b,0x00,0x00,0xb8 page5 db 000000011b,0x00,0x00,0xb8 page6 db 000000011b,0x00,0x00,0xb8 tablepage1 db 0x03,0x00,0x00,0x00
Anonymous
правильно ли ?
Anonymous
я хочу вывести с разных страниц сообщение
Anonymous
получается мне надо так думать При каждом обращении к памяти виртуальный адрес делится на три части, раз- меры которых - 10-10-12 (слева направо).
Anonymous
ну и получается я записываю его но его сложно записывать я еще не тестировал и не знаю правильно я сделал или нет
Anonymous
но структуры я думаю правильно составил
Anonymous
наверное надо использовать после mov cr0,eax jmp far с виртуальным адресом
Anonymous
хотя не только jmp near far не надо
Anonymous
Вот я покрыл своё адресное пространство а как к нему обращаться
Anonymous
Как изменить eip если уже в силу вошёл paging
Anonymous
начать виртуальное адресное пространство со следующего 4 килобайта
Anonymous
И дальше прыгнуть туда и от туда уже закрыть дырку физическую?
Anonymous
вопрос еще такой почему uefi использует формат PE а не какой то свой или другой ?
Anonymous
Хахааххаха
Anonymous
:)
Anonymous
Кто то помодет paging?)
Anonymous
поможет*
Anonymous
Прочитал раздел книги прочитал статьи а в практики я ноль
Anonymous
По paging
Anonymous
я не видел такого чтобы uefi efi использовал elf
­
В смысле, Я не против, если бы EFI Forum использовал бы elf для стандарта.
Aiwan \ (•◡•) / _bot
майки видимо деньги за это заплатили, им нужней, а вот ельф из другой оперы
­
Деньги вряд ли, а вот первыми написать предложение структуры исполняемых файлов...
Eugene
А не похрен ли, какой там формат? Вот реально...
Anonymous
Нет не похрен
Anonymous
Формат это структура
Anonymous
А не 'похрен'
Eugene
Ну вот ты код написал. То ли оно будет у тебя в итоге в PE, то ли в ELF — что это меняет?
Aiwan \ (•◡•) / _bot
­
закос под проприентарщину
Закос под тупо стандарт структуры исполняемого файла. И вообще это во флуд.
Eugene
То, что исполнитель PE не сможет выполнить код ELF- файла.
Я к тому, что если бы он понимал ELF, а не PE, было бы от этого легче?
Vladimir
наверное надо использовать после mov cr0,eax jmp far с виртуальным адресом
Код, включающий MMU должен находиться в тождественно отображенной странице. А после прыгай куда угодно.
Anonymous
А как мне обратиться к видео памятт
Danil
А как мне обратиться к видео памятт
https://en.m.wikipedia.org/wiki/ARB_assembly_language
Anonymous
не так все просто с paging
Anonymous
Anonymous
вот структура: page1 db 000000011b,0x00,0x00,0x70 page2 db 000000011b,0x00,0x40,0x1f page3 db 000000011b,0x00,0x28,0x23 page4 db 000000011b,0x00,0x80,0x0b page5 db 000000011b,0x00,0x80,0x0b page6 db 000000011b,0x00,0x80,0x0b tablepage1 db 0x03,0x00,0x00,0x00
Aiwan \ (•◡•) / _bot
бошем всетаки пользуешься
Anonymous
ну да а почему бы и нет
Anonymous
здесь он хорошо выполняет свою задачу
Aiwan \ (•◡•) / _bot
А как мне обратиться к видео памятт
https://t.me/proasm/46901 ты разве не изучаешь материал который сам же и кидаешь сюда?
Anonymous
нет человек писал зачем мне 0x0b8000
Anonymous
я ему ответил ну как по другому то
Aiwan \ (•◡•) / _bot
нет человек писал зачем мне 0x0b8000
это для реального режима, uefi работает в защищенном
Aiwan \ (•◡•) / _bot
Aiwan \ (•◡•) / _bot
кстати, работая с фрейм буфером ефи, можно сначало потренироваться в линухе или досе, там аналогичные принцыпы. но линух будет наверное удобней в плане отладки и просмотра результата сразу /правки кода
Anonymous
вопрос такой у меня вот есть 4 задачи процессор в многозадачности как сделать так чтобы был обработчик который будет каждые 5 секунд перехватывать управление и передовать управление другой задаче какое должно быть исключение которое бы побуждало бы процессор переклчить на обработчик переключить*
Sevapp
а это вообще нормальная практика по времени передавать управление другому процессу?
Anonymous
да так многозадачность рботает
Anonymous
по определенному интервалу передавать управление последовательно каждому потоку
Sevapp
ну интервал это можно не только во времени измерять, а еще там в тактах
Sevapp
почему современные x64 позволяют float/double делить на 0?
Aiwan \ (•◡•) / _bot
мож потому что есть средства это детектировать?
Sevapp
мож потому что есть средства это детектировать?
а раньше это было невозможно типа?
Aiwan \ (•◡•) / _bot
почему современные x64 позволяют float/double делить на 0?
тогда хотел бы уточнить, что ты подразумеваешь под словом позволяют? процы себе ничего не могут позволить, это машина. позволяет человек, если он захочет он поделит на ноль, если это программно ноль вычислился, то прогер добавит доп код чтоб избежать краша/зависа
Aiwan \ (•◡•) / _bot
а раньше это было невозможно типа?
было возможно и раньше, работа с этими типами никак не изменилась со времени их появления