>> догадки, причём неполные: а что будет, если сделать outb(port-1, value+1)?
> Скорее всего ничего хорошего - потому что там будут bit fields какие-нибудь,
> для начала, и попытка с ними поработать вот прямо так ...
> может прийти в бошку только какому-нибудь математику-теоретику, который вообще не в
> курсах как железки устроены :) Да какая разница, кому пришло в голову поработать так? Главное что ты посмотрев код, работающий с железкой, не узнал ничего нового: всё что можешь ответить на поставленный вопрос -- то же самое, что ты можешь ответить не глядя в код, то есть пытаться обесценить вопрос, доказывать, что вопрос не заслуживает ответа, рассказывать про математика-теоретика, который в отличие от умного тебя туп безбожно и ничего не понимает в железе. Но на вопрос-то ты не можешь ответить, а не математик, так? ;)
И да, не над оскорблять операции сложения и вычитания, мол, они только математику-теоретику в голову придти могут. Эти операции не могут придти в голову современному системному программисту, которому вдолбили в голову, что если value представляет собой битфилд, то его собирать надо при помощи побитового ИЛИ из предопределённых констант. Хрен тут был и сбоку бантик. value+1 можно использовать для того, чтобы установить младший бит, например (если он ноль конечно). Можно использовать для того, чтобы сбросить младший бит, и установить тот, что постарше. Можно инвертировать 0xff. Можно число вида 0b00...11 превратить в 0b00..010..00, и это новое число будет равно 2^n, где n -- это количество ненулевых бит в исходном числе. И всё это великолепие одной командой процессора (правда похерив флаги). Сегодня так не делают, потому что это "грязные хаки", которые выносят мозг неподготовленным, и те начинают кричать, что "код нечитабельный". В 80-е и раньше такой стиль был нормой (не везде конечно, но на PC я видел немало такого), потому как экономия одной машинной команды -- это было хорошо. Писать так было нормой, а если ты умел читать такой код и понимать, то ты был крутым специалистом.
> Да и периферия нынче в таком формате шпрехать не изволит - поскольку
> на асме уже не модно, железки как-то резко стали memmapped. У
> ip-блока есть некий регион и там живет его кучка регистров. И
> сорец это как правило и описывает и более менее понятно что
> это за фигня и как работает.
С портами, сорец скорее всего тоже давал номерам портов всякие хорошие имена, это принципиально не меняет ничего.