Защита адреса при записи
2016-12-10 15:16Дошёл до реализации необычного свойства процессора микро-БЭСМ, отсутствующего у современных компьютеров. Каждое слово в оперативной памяти имеет дополнительный бит запрета записи. При попытке записи по этому адресу возникает прерывание "защита адреса при записи". Чтобы всё-таки иметь возможность изменить значение (и бит запрета), память имеет дополнительный сигнал, отменяющий защиту.
Получается полезная возможность, похожая на const в языке Си, но при этом защиту можно включать и отключать по ходу выполнения программы. Что-то отдалённо похожее - теговая архитектура - существовало в некоторых ранних компьютерах, но не прижилось.
Получается полезная возможность, похожая на const в языке Си, но при этом защиту можно включать и отключать по ходу выполнения программы. Что-то отдалённо похожее - теговая архитектура - существовало в некоторых ранних компьютерах, но не прижилось.

no subject
Date: 2016-12-10 23:47 (UTC)Все влазят, но не всех убивает.
no subject
Date: 2016-12-11 03:39 (UTC)no subject
Date: 2016-12-11 05:00 (UTC)void foo(void)
{
#pragma push(fuck)
#pragma fuck(off)
a = 0;
#pragma pop(fuck)
}
no subject
Date: 2016-12-12 13:15 (UTC)const_cast
(no subject)
From:(no subject)
From:(no subject)
From:no subject
Date: 2016-12-11 01:11 (UTC)no subject
Date: 2016-12-11 03:38 (UTC)no subject
Date: 2016-12-11 08:01 (UTC)Это наверное легко реализуется на встроенных блоках FPGA. А если память реализована на обычной SDRAM? Все равно, если защита записи включена и идет обращение на запись без явного отключения защиты, придется этот контрольный бит сначала прочитать. Ну да, кеширование и прочее как-то помогут, да и запись менее частое событие. Но, думаю, на дескрипторы страниц (вместо битов для отдельных слов) не просто так перешли в более свежих архитектурах.
(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:no subject
Date: 2016-12-11 04:20 (UTC)no subject
Date: 2016-12-11 04:42 (UTC)(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:no subject
Date: 2016-12-11 04:22 (UTC)no subject
Date: 2016-12-11 19:31 (UTC)no subject
Date: 2016-12-11 22:04 (UTC)no subject
Date: 2016-12-15 00:30 (UTC)no subject
Date: 2016-12-15 08:17 (UTC)If CR4.PKE = 1, IA-32e paging associates with each linear address a protection key.
The protection-key feature provides an additional mechanism by which IA-32e paging controls access to user-mode addresses. When CR4.PKE = 1, every linear address is associated with the 4-bit protection key located in bits 62:59 of the paging-structure entry that mapped the page containing the linear address (see Section 4.5). The PKRU register determines, for each protection key, whether user-mode addresses with that protection key may be read or written.
The PKRU register (protection key rights for user pages) is a 32-bit register with the following format: for each i
(0 ≤ i ≤ 15), PKRU[2i] is the access-disable bit for protection key i (ADi); PKRU[2i+1] is the write-disable bit for protection key i (WDi).
Software can use the RDPKRU and WRPKRU instructions with ECX = 0 to read and write PKRU. In addition, the PKRU register is XSAVE-managed state and can thus be read and written by instructions in the XSAVE feature set.
> Причём всё это на аппаратном уровне
Учитывая, что у SPARC, в отличие от x86, вообще нет каталогов страниц, это, конечно, для него существенно.
У x86 всё управление доступом "аппаратное" и разницы нет.
no subject
Date: 2016-12-11 08:53 (UTC)no subject
Date: 2016-12-11 19:30 (UTC)Самый прикол в том, что признак const у слова можно менять в рантайме. Ни один из известных языков даже мысли такой не допускает.
no subject
Date: 2016-12-11 21:48 (UTC)no subject
Date: 2016-12-11 21:55 (UTC)Тогда при вызове функции можно сразу по умолчанию запрещать переписывать данные стека, например. Или наоборот, разрешать запись только в выделенную память (правда это будет медленно).
Зато у вас будет большой геморрой с многопоточностью. :-)
no subject
Date: 2016-12-11 09:01 (UTC)no subject
Date: 2016-12-11 19:32 (UTC)no subject
Date: 2016-12-11 11:39 (UTC)no subject
Date: 2016-12-11 19:36 (UTC)no subject
Date: 2016-12-12 04:25 (UTC)(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:no subject
Date: 2016-12-12 16:05 (UTC)no subject
Date: 2016-12-14 01:16 (UTC)Но теги гораздо гибчее потенциально.