Вы не учитываете, что во время когда 32-х битных контроллеров от ST физически не существовало а их ARM аналоги стоили не в три раза дешевле а в 10 раз дороже на 8-ми битных AVR были созданы некие устройства (и их не мало) — написан некий рабочий код (его тоже не мало) все это было продано (много и успешно). И задачи их развития поддержки и расширения функционала (без смены процессора и выпуска новых устройств) за это время никуда не делись. И решатся они могут зачастую только лишь за счет оптимизации тем или иным способом.
Естественно в новых разработках это никому не нужно.
При проектировании этого можно избежать используя уникальный «адрес» в рамках того же HDLC исключительно для пакетов длинна которых может быть неизвестна и другие уникальные адреса для пакетов фиксированных известных длин.
Берете обычный HDLC
Начало и конец пакета префиксируется байтом 7E (старт-стоп).
внутри пакета 7E заменяется на 7D 5E, 7D на 7D 5D.
перед концом CRC16-CCITT (просто потому что так заведено)…
Далее длинна пакета внутри известна… Битые отбрасываете по критерию длинны и по критерию не соответствия CRC16. Это десятилетиями работает в миллиардах приложений.
В оригинальной первой схеме watchdog был — потом его упразднили… Просто не очень много толку от него было, как показала практика. И иногда при неудачном стечении обстоятельств на выходе таймера при подаче питания мог оказываться постоянный лог0 и схема не запускалась до перевключения.
Вообще то во времена Win8 Микрософт возвращала 16мс в каких то из апдейтов на ноутбуках, по той причине, что при кванте 16мс значительно меньше потребление энергии от батарейки — больше времени работы в режиме ожидания. В то же время куча программ откручивают назад на 1 (зачастую не имея для этого оснований).
Поэтому поведение этой функции далеко не всегда соответствует ожидаемому.
вот видите сначала тепловой расчет не проводят, а потом борются с последствиями ничтожного тепла, закачивая газ.
Ага — и еще так во всем мире делают… Начиная с фирмы Сакс — которая этот тип амортизаторов и придумала… И кончая самым последним китайским сборщикам. Вот дураки то -а надо было тепловые расчеты проводить.
иногда есть
Да иногда за 100 переваливает — но вы с этим никогда не столкнетесь в городе — поэтому и без газа все тоже прекрасно работает.
Важное — там первый пункт… То что вы считаете важным — это всего лишь желаемое…
В отличие от вас я читал отчеты по испытаниям серийных заводских амортизаторов автомобилей в том числе и по этим вот книжкам спроектированных — и там на эту вашу стабильность от температур просто болт забивали, и «нестабильные» амортизаторы ставились на автомобили серийно… Потом конечно через лет 5-6 если это представляло какую то прям серьезную проблему в каких то регионах (африка да) конструкцию доводили а если нет — так они десятилетиями выпускались «нестабильные» — и умирали вместе с моделями носителями.
Так вот всем плевать, что в каких то закритических условиях в которые попасть статистическая вероятность 0.001 демпфирующие характеристики вдруг оказались не теми, что кто то там ожидал… Скорость сбросили — и едем дальше! Люди вообще без амортизаторов ездят и с вытекшими годами ездят ежедневно на работу… ничего — доезжают…
Так вот если у вас значительная асимметрия усилий сжатия и отбоя (а она всегда есть в гражданских амортизаторах) — то ни о какой стабильности характеристик вообще не может идти речь! Слишком разные условия работы клапанных механизмов… И для того чтоб эта стабильность хоть какая то была — никто не отводит смешное тепло которого там нет обычно, и не пытается стабилизировать температуру — а в амортизатор закачивают АЗОТ под давлением для того, чтоб сдвинуть точку парообразования в АЖ в которой всегда есть какое то количество влаги, чтоб не образовывались паровые пробки в надпоршневом пространстве. Таким образом просто расширяя диапазон по температуре.
Функция идёт к планировщику потоков ОС и говорит ему «мы с моим потоком хотели бы отказаться от выделенного нам ресурса процессорного времени, сейчас и ещё на вот столько-то миллисекунд в будущем. Отдайте бедным!». Слегка удивлённый подобной щедростью планировщик выносит функции благодарность от имени процессора, отдаёт оставшийся кусок времени следующему желающему (а такие всегда найдутся) и не включает вызвавший Sleep поток в претенденты на передачу ему контекста выполнения на указанное количество миллисекунд. Красота!
Нет красоты там нет… Вы забыли, что время там выделяется дискретными кусками в зависимости от задания timeBeginPeriod (что в свою очередь зависит от самой ОС и запущенного софта, который в этот timeBeginPeriod полез и поставил то что ему нравится). Отсюда Sleep(1) может длится как примерно 1.1мс так и примерно 15.6мс.
Ничто не мешает вести несколько параллельных мнемоник
Ну черт возьми зачем в реале нужен этот фирменный линуксовый велосипед? (равно как опен офис-гимп-и вот это все).
короче суть я понял — вы знаете целого одного человека который пишет в этом синтаксисе и целых штук 5 оригинальных проектов если исключить туда сюда таскуемую криптуху и столетний загрузчик — несомненно изобретение нового синтаксиса — того стоило!
Кстати, в регистрах вы ошиблись — HL это BX, а не SI.
Конечно — я уже и не помню даже правил транслятора 8080>8086 мне почему то казалось он SI использует в этом случае — да и пофигу — все это мертво.
Когда таких команд было только две — такая мнемоника была выгоднее.
Простите, а чего вы вообще хотели, прося примеры на ассемблере?
Людей я хотел. Который пишут сейчас. А не куски кода написанные в 90-х типа AESа и 16-ти битного загрузчика который туда сюда таскают по проектам, размахивая им как флагом.
SPHL или MOV SP,HL — для них имело десятое и двадцатое значение.
Потому, что они просто слаще меда ничего не едали. И кроме SPHL ничего в жизни не писали. И им тогда совсем не очевидно было, что в будущем регистровых пар которые можно будет положить в SP, будет несколько больше, чем одна, и что записи MOV SP,HL эволюционировавшей в MOV RSP,RSI (x86-64) скоро стукнет 40 лет и даст бог — мы еще в раю будем так писать, а их SPHL через 5 лет просто сдохнет.
А что вам не так в синтаксисе AVR? ;)
Да это же классический идиотизм вида «1 действие — 100500 мнемоник» — та же SPHL вид сбоку, причем во времена когда был доступен анализ чужого опыта в огромном объеме — короче в очередной раз задачу лингвиста решают какие то студенты.
Оно целиком на ассемблере? Или всё же какие-то ключевые моменты?
Насколько я могу судить по объему кода и функционалу — оно целиком!
Да полно вокруг. Просто обычно в нашем мире это выглядит как библиотека (чаще опенсорсная), в которой некоторый набор критичных по скорости элементов написан на ассемблере
Про криптографию сразу забудьте. Ну не имеет никакого отношения к программированию на ассемблере то, что вы взяли самую оптимальную реализацию AES на x86 ассемблере, которой лет столько же сколько самому AES (и еще одну параллельную которой чуть меньше — на наборе инструкций AES) и над которой работали по сути единичные личности один раз в жизни — а дальше начали ее транслировать из синтаксиса в синтаксис и таскать из проекта в проект, и перебивать там по мелочи для того, чтоб из closed source сделать ее open source и еще раз, чтоб наоборот, с каждой итерацией этого цирка делая только хуже (потому что там других вариантов нет — эти вещи когда один раз нормально пишутся на ассемблере — каждый такт считают и каждый метод по 3 раза обдумывают — и любые переписи их только портят)…
Опять же GRUB — это я так понимаю речь о куске сектора в 512 байт в 16-ти битном коде которому 100500лет и который не позволяет сдохнуть как классу 16-ти битным компиляторам (но скоро сдохнет ибо uefi же)? ну да — много людей наверно денно и ночно его пишут, учитывая, что там с начала существования grub ничего не менялось…
И останутся у вас таким темпом только кодеки и странные закрытые библиотеки из непонятных дров. И придете вы к двум с половиной гиков. А уж в юзерспейсе в линуксе ассемблера вообще не существует. (в виндах — есть).
Простите, я это не могу воспринять иначе как странную шутку. Синтаксис ассемблера, при наличии готовой системы команд — задача студенческого уровня.
Никогда нельзя поручать студенту работу профессионального лингвиста — иначе получаются такие выкидыши дилетантов, как наборы AVR и microchip инструкций. Язык — это очень сложная штука и в нем очень легко налажать. Это не просто текст — это архитектура и это восприятие. Если мнемосхема логична, а код правильно структурирован, нормально выровнен, и имеет разделение оператор-операнды, выбран правильный шрифт и на дисплее строго определенный объем информации — достаточно буквально одного короткого взгляда на страницу текста, чтоб мгновенно понять, что именно этот код делает. Ни один приближенный к естественному язык программирования не дает такой возможности. Потому что вам надо в каждой строке 100500 раз думать, что там в какой последовательности выполняется. в ассемблере выполняется без вариантов сверху вниз. Кроме того система должна быть спроектирована на будущее — т.е. необходимо не просто выстроить логичную схему мнемоник, но и понимать как в эту схему могут добавляться мнемоники которых сейчас еще нет но они будут. Была поучительная история, как раз с интелом в виде скачка с тупиковых мнемоник 8080 (по критерию меньше текста лучше и инклюзивные операторы-операнды) к продуманным и расширяемым Z80 Фейджина (лучше больше зато логично и последовательно, операторы и операнды разделены в столбцах), в интеле просто не дураки сидели и смогли понять где именно они налажали и почему 8080 довольно хреново продавался и код к нему писался не очень. Тогда они отказались от текстовой совместимости в пользу транслятора и все придумали заново! Потому, что если бы в интеле ТОГДА в конце 70-х этого бы не поняли своей ошибки — сейчас бы скорее всего мы жили в другом мире, с совершенно другой архитектурой ПК на вашем столе. Вот вам один пример той самой серьезной исследовательской работы — которая по сути изменила мир через 30 лет.
«В реальном мире» вообще пишущих на ассемблере не видать, а я таки вижу людей, которые пишут и именно на AT&T.
Вот тут по ходу обсуждения обнаружилось аж целое ОДНО коммерческое решение на ASM под win (хотя их не мало). А где можно на этих ваших «людей пишущих в синтаксисе at&t» посмотреть?
Но для меня сам этот мир это какая-то соседняя галактика, наблюдаемая только в телескоп.
Учитывая, что это 90+% рынка десктоп ос — вы телескоп то правильной стороной разверните — а то поле зрения сужено слишком…
Процессору любой синтаксис ассемблера чужд, как и сам ассемблер
Это не подмена понятий — разработка синтаксиса ассемблерных команд задача не много проще, чем разработка самого процессора. И удачные синтаксисы увы встречаются очень не часто. И возникают они не просто так — за ними стоят огромные наборы очень серьезных правил как лингвистики так и логики и специалисты в этих отраслях. Поэтому и нельзя вот так по желанию левой пятки взять и создать «свой синтаксис с блекджеком и тп...».
Вы фундаментально путаете понятие «специалист» и понятие «человек который в курсе как бывает и что то где то видел»… Специалист — это тот кто на этом ПИШЕТ причем ручками (т.е. можно увидеть им написанные результаты и вывести статистику), а не тот кто в курсе «как оно там бывает»… А пишущих в at&t относительно пишущих в intel-е в реальном мире и в бинокль не видать. Опять же зачем в GNU СЕЙЧАС вдруг возник интеловский синтаксис — если по вашему все так хорошо с at&t-шным из тогда? Признали ошибку или что — хотят притянуть реальную аудиторию которой не нужен цирк с чуждым процессору синтаксисом?
Для того чтоб заявлять, что что то кем то вытеснялось — поищите хотя бы целевую аудиторию, для этих средств вытеснения… (пишущую на линуксах на x86 ассемблере)…
Так вот кроме пары гиков делающих это чисто по приколу и пары каких нибудь разработчиков кодеков, которые скорее всего текстовым перепроцессором получают результаты своей писанины напрямую из интеловских кодов — вы их не найдете. Потому что ни один специалист не будет учить 2-й велосипед идентичный первому на уровне функционала. В то же время существует 10-к огромных community пишущих в intel синтаксисе под win.
intel синтаксис так же похож на различных архитектурах надо ли говорить, что немалая часть архитектур интелом и придумана и синтаксис в каждой новой так или иначе наследовался — как и названия и назначения регистров, и в x86 есть команды из набора 4004, и расширение регистров из набора 8080. Тот же исходник для 8080 транслируется в x86 автоматически на уровне текста. В нем точно так же есть набор правил о том как записываются immediate и что за чем стоит. В итоге не существует какой либо сложности написать как программу компилятор ЯВУ в этот ассемблер (что было сделано ДО того как at&t придумала зачем то этот) так и компилятор этого (и любого) ассемблера в машинные коды (что вообще было сделано одновременно с появлением X86 в конце 70-х). Последнее — ну очень простая программа (представленная в данных исходниках образца 81 года).
А вот с различными архитектурами — не получится. Потому, что на уровне ассемблера переносимости банально нет и быть не может! Следовательно ничего не мешает ему выглядеть в выводе как интел. Т.е. еще раз — «нафиг не нужен». Мало того замусорен, ибо префиксирует основной элемент текста (регистр), когда все нормальные префиксируют редко используемые элементы текста… Т.е. мало того, что велосипед изобрели — еще и колеса квадратные.
Почему вы исключаете, что те кто воруют — используют абсолютно все возможные и доступные способы воровства одновременно c целью повышения ДОХОДОВ с воровства?
Ах ну да — там же кот голодный… Понять и простить…
Вообще никаких тут сложностей не вижу — у вас есть хранилище и есть запрограммированный четкий недолив — вы прекрасно знаете что и как пойдет… слили от того что там «должно быть» 5% и все!
И что вас тут так смущает? Что нельзя воровать одновременно и у людей в рознице (недолив) и у компании (недостача)?! А где написано, что это одновременно на одной и той же АЗС вообще происходило? Не вижу никаких противоречий в тексте (зато вижу слово автозаправочНЫХ).
И самый уж простой вариант — из хранилища сливается бензин и продается мимо счетчика оптом в счет будущего воровства на недоливе — вот вам одновременно и недолив и недостача!
Естественно в новых разработках это никому не нужно.
Берете обычный HDLC
Начало и конец пакета префиксируется байтом 7E (старт-стоп).
внутри пакета 7E заменяется на 7D 5E, 7D на 7D 5D.
перед концом CRC16-CCITT (просто потому что так заведено)…
Далее длинна пакета внутри известна… Битые отбрасываете по критерию длинны и по критерию не соответствия CRC16. Это десятилетиями работает в миллиардах приложений.
Вот тут в приложении есть схема которую можно считать оригинальной первой схемой для VEF-TA12 www.bestreferat.ru/referat-53194.html
А вот классический репринт с минимальными доработками — он наиболее известен как базовая схема АОН-Z80 dr-shost.com/freqs/dosutil/aon_vef.gif
Поэтому поведение этой функции далеко не всегда соответствует ожидаемому.
В Ниве (любой паркетник же да) они так же имеют шток 11мм и поршень 27мм.
Конструктивно они абсолютно одинаковы. Различаются лишь некоторые линейные размеры (ход) и жесткость пружин клапанов (усилия).
Речь про двухтрубные.
В однотрубном в принципе нельзя без газового подпора.
Ага — и еще так во всем мире делают… Начиная с фирмы Сакс — которая этот тип амортизаторов и придумала… И кончая самым последним китайским сборщикам. Вот дураки то -а надо было тепловые расчеты проводить.
Да иногда за 100 переваливает — но вы с этим никогда не столкнетесь в городе — поэтому и без газа все тоже прекрасно работает.
В отличие от вас я читал отчеты по испытаниям серийных заводских амортизаторов автомобилей в том числе и по этим вот книжкам спроектированных — и там на эту вашу стабильность от температур просто болт забивали, и «нестабильные» амортизаторы ставились на автомобили серийно… Потом конечно через лет 5-6 если это представляло какую то прям серьезную проблему в каких то регионах (африка да) конструкцию доводили а если нет — так они десятилетиями выпускались «нестабильные» — и умирали вместе с моделями носителями.
Так вот всем плевать, что в каких то закритических условиях в которые попасть статистическая вероятность 0.001 демпфирующие характеристики вдруг оказались не теми, что кто то там ожидал… Скорость сбросили — и едем дальше! Люди вообще без амортизаторов ездят и с вытекшими годами ездят ежедневно на работу… ничего — доезжают…
Так вот если у вас значительная асимметрия усилий сжатия и отбоя (а она всегда есть в гражданских амортизаторах) — то ни о какой стабильности характеристик вообще не может идти речь! Слишком разные условия работы клапанных механизмов… И для того чтоб эта стабильность хоть какая то была — никто не отводит смешное тепло которого там нет обычно, и не пытается стабилизировать температуру — а в амортизатор закачивают АЗОТ под давлением для того, чтоб сдвинуть точку парообразования в АЖ в которой всегда есть какое то количество влаги, чтоб не образовывались паровые пробки в надпоршневом пространстве. Таким образом просто расширяя диапазон по температуре.
Нет красоты там нет… Вы забыли, что время там выделяется дискретными кусками в зависимости от задания timeBeginPeriod (что в свою очередь зависит от самой ОС и запущенного софта, который в этот timeBeginPeriod полез и поставил то что ему нравится). Отсюда Sleep(1) может длится как примерно 1.1мс так и примерно 15.6мс.
Ну черт возьми зачем в реале нужен этот фирменный линуксовый велосипед? (равно как опен офис-гимп-и вот это все).
короче суть я понял — вы знаете целого одного человека который пишет в этом синтаксисе и целых штук 5 оригинальных проектов если исключить туда сюда таскуемую криптуху и столетний загрузчик — несомненно изобретение нового синтаксиса — того стоило!
Конечно — я уже и не помню даже правил транслятора 8080>8086 мне почему то казалось он SI использует в этом случае — да и пофигу — все это мертво.
какие в AVR две!?
там сразу с десяток.
Людей я хотел. Который пишут сейчас. А не куски кода написанные в 90-х типа AESа и 16-ти битного загрузчика который туда сюда таскают по проектам, размахивая им как флагом.
Потому, что они просто слаще меда ничего не едали. И кроме SPHL ничего в жизни не писали. И им тогда совсем не очевидно было, что в будущем регистровых пар которые можно будет положить в SP, будет несколько больше, чем одна, и что записи MOV SP,HL эволюционировавшей в MOV RSP,RSI (x86-64) скоро стукнет 40 лет и даст бог — мы еще в раю будем так писать, а их SPHL через 5 лет просто сдохнет.
Да это же классический идиотизм вида «1 действие — 100500 мнемоник» — та же SPHL вид сбоку, причем во времена когда был доступен анализ чужого опыта в огромном объеме — короче в очередной раз задачу лингвиста решают какие то студенты.
Насколько я могу судить по объему кода и функционалу — оно целиком!
Про криптографию сразу забудьте. Ну не имеет никакого отношения к программированию на ассемблере то, что вы взяли самую оптимальную реализацию AES на x86 ассемблере, которой лет столько же сколько самому AES (и еще одну параллельную которой чуть меньше — на наборе инструкций AES) и над которой работали по сути единичные личности один раз в жизни — а дальше начали ее транслировать из синтаксиса в синтаксис и таскать из проекта в проект, и перебивать там по мелочи для того, чтоб из closed source сделать ее open source и еще раз, чтоб наоборот, с каждой итерацией этого цирка делая только хуже (потому что там других вариантов нет — эти вещи когда один раз нормально пишутся на ассемблере — каждый такт считают и каждый метод по 3 раза обдумывают — и любые переписи их только портят)…
Опять же GRUB — это я так понимаю речь о куске сектора в 512 байт в 16-ти битном коде которому 100500лет и который не позволяет сдохнуть как классу 16-ти битным компиляторам (но скоро сдохнет ибо uefi же)? ну да — много людей наверно денно и ночно его пишут, учитывая, что там с начала существования grub ничего не менялось…
И останутся у вас таким темпом только кодеки и странные закрытые библиотеки из непонятных дров. И придете вы к двум с половиной гиков. А уж в юзерспейсе в линуксе ассемблера вообще не существует. (в виндах — есть).
Никогда нельзя поручать студенту работу профессионального лингвиста — иначе получаются такие выкидыши дилетантов, как наборы AVR и microchip инструкций. Язык — это очень сложная штука и в нем очень легко налажать. Это не просто текст — это архитектура и это восприятие. Если мнемосхема логична, а код правильно структурирован, нормально выровнен, и имеет разделение оператор-операнды, выбран правильный шрифт и на дисплее строго определенный объем информации — достаточно буквально одного короткого взгляда на страницу текста, чтоб мгновенно понять, что именно этот код делает. Ни один приближенный к естественному язык программирования не дает такой возможности. Потому что вам надо в каждой строке 100500 раз думать, что там в какой последовательности выполняется. в ассемблере выполняется без вариантов сверху вниз. Кроме того система должна быть спроектирована на будущее — т.е. необходимо не просто выстроить логичную схему мнемоник, но и понимать как в эту схему могут добавляться мнемоники которых сейчас еще нет но они будут. Была поучительная история, как раз с интелом в виде скачка с тупиковых мнемоник 8080 (по критерию меньше текста лучше и инклюзивные операторы-операнды) к продуманным и расширяемым Z80 Фейджина (лучше больше зато логично и последовательно, операторы и операнды разделены в столбцах), в интеле просто не дураки сидели и смогли понять где именно они налажали и почему 8080 довольно хреново продавался и код к нему писался не очень. Тогда они отказались от текстовой совместимости в пользу транслятора и все придумали заново! Потому, что если бы в интеле ТОГДА в конце 70-х этого бы не поняли своей ошибки — сейчас бы скорее всего мы жили в другом мире, с совершенно другой архитектурой ПК на вашем столе. Вот вам один пример той самой серьезной исследовательской работы — которая по сути изменила мир через 30 лет.
Вот тут по ходу обсуждения обнаружилось аж целое ОДНО коммерческое решение на ASM под win (хотя их не мало). А где можно на этих ваших «людей пишущих в синтаксисе at&t» посмотреть?
Учитывая, что это 90+% рынка десктоп ос — вы телескоп то правильной стороной разверните — а то поле зрения сужено слишком…
Это не подмена понятий — разработка синтаксиса ассемблерных команд задача не много проще, чем разработка самого процессора. И удачные синтаксисы увы встречаются очень не часто. И возникают они не просто так — за ними стоят огромные наборы очень серьезных правил как лингвистики так и логики и специалисты в этих отраслях. Поэтому и нельзя вот так по желанию левой пятки взять и создать «свой синтаксис с блекджеком и тп...».
Так вот кроме пары гиков делающих это чисто по приколу и пары каких нибудь разработчиков кодеков, которые скорее всего текстовым перепроцессором получают результаты своей писанины напрямую из интеловских кодов — вы их не найдете. Потому что ни один специалист не будет учить 2-й велосипед идентичный первому на уровне функционала. В то же время существует 10-к огромных community пишущих в intel синтаксисе под win.
А вот с различными архитектурами — не получится. Потому, что на уровне ассемблера переносимости банально нет и быть не может! Следовательно ничего не мешает ему выглядеть в выводе как интел. Т.е. еще раз — «нафиг не нужен». Мало того замусорен, ибо префиксирует основной элемент текста (регистр), когда все нормальные префиксируют редко используемые элементы текста… Т.е. мало того, что велосипед изобрели — еще и колеса квадратные.
Ах ну да — там же кот голодный… Понять и простить…
Вообще никаких тут сложностей не вижу — у вас есть хранилище и есть запрограммированный четкий недолив — вы прекрасно знаете что и как пойдет… слили от того что там «должно быть» 5% и все!
И самый уж простой вариант — из хранилища сливается бензин и продается мимо счетчика оптом в счет будущего воровства на недоливе — вот вам одновременно и недолив и недостача!