Size: a a a

pro.osdev - os development

2021 October 06

BD

Berkus Decker in pro.osdev - os development
достаточно посмотреть как чуваки боролись с инициализацией в растовом коде для осдева, там тоже веселое уб вылезло
источник

d

disba1ancer in pro.osdev - os development
в расте тоже этого говна хватает?
источник

BD

Berkus Decker in pro.osdev - os development
вылезает из сишных недр периодически, модель памяти то ллвмовская у всех
источник

BV

Boris Vinogradov in pro.osdev - os development
Zero page
источник

d

disba1ancer in pro.osdev - os development
ладно ща гляну, аж любопытно стало
источник

BV

Boris Vinogradov in pro.osdev - os development
Точнее как, там этот кусок памяти закрывают тк он указывает в ту область куда пользователю ходить нельзя
источник

BV

Boris Vinogradov in pro.osdev - os development
Some computer architectures still reserve the beginning of address space for other purposes, though; for instance, Intel x86 systems reserve the first 256 double-words of address space for the interrupt vector table (IVT) if they run in real mode.
A similar technique of using the zero page for hardware related vectors was employed in the ARM architecture. In badly written programs this could lead to "ofla" behaviour, where a program tries to read information from an unintended memory area, and treats executable code as data or vice versa. This is especially problematic if the zero page area is used to store system jump vectors and the firmware is tricked into overwriting them.[3]
источник

BD

Berkus Decker in pro.osdev - os development
ну обычно zero page делают недоступной, чтобы по семантике Сишной уб не просто молча происходило а крашило программу
источник

BD

Berkus Decker in pro.osdev - os development
заодно все указатели из интов в диапазоне 0-4095 тоже становятся крашащимися
источник

BD

Berkus Decker in pro.osdev - os development
ну или 16383, зависит от размера этой страницы
источник

BD

Berkus Decker in pro.osdev - os development
к эмбеду мало применимо - там можно любые адреса)
источник

BD

Berkus Decker in pro.osdev - os development
поэтому сишка для эмбеда не подходит, лул
источник

BV

Boris Vinogradov in pro.osdev - os development
Интел постарался и там хранит таблицу прерываний
источник

d

disba1ancer in pro.osdev - os development
боюсь и другие языки тоже
источник

BV

Boris Vinogradov in pro.osdev - os development
Поэтому пришлось ещё и ремап делать
источник

BD

Berkus Decker in pro.osdev - os development
ну только в реальном режиме, тогда и мму то не было толком
источник

d

disba1ancer in pro.osdev - os development
но даже в реальном режиме её можно переместить
источник

BV

Boris Vinogradov in pro.osdev - os development
В протектед тоже не так просто, но с х86_64 пофиг да
источник

BV

Boris Vinogradov in pro.osdev - os development
Поэтому каждый ымбеддед ынжынер на ней пишет коду на 100 ГБ репу
источник

BV

Boris Vinogradov in pro.osdev - os development
Можно, но сам факт остался как часть наследия
источник