LINUX.ORG.RU
ФорумTalks

Существует ли какой-нибудь «язык описания проводов»?

 , , ,


0

3

Суть в том, что такой язык «разметки» (или «программирования») должен позволять описывать отдельные биты, а так же способы их группировки в битовые поля.

Например в коде инструкции биты, обозначающие код регистра могут находится в несмежных позициях относительно начала инструкции. Нужно уметь описать преобразование имени регистра в код и в биты, и в обратную сторону.

Просто какого-нибудь ASN.1 не хватит, так как он (я так предполагаю) не позволяет описывать преобразования битовых полей или битовых значений (не умеет «вычислять»). С другой точки зрения, вычисления в стиле арифметики (сложение/вычитание) не требуются. Основные операции - это перестановки, склеивания и разрезания.

★★★★

Последнее исправление: Shushundr (всего исправлений: 2)

bit syntax эрланга еслия правильно понял что тебе нужно

-define(IP_VERSION, 4).
-define(IP_MIN_HDR_LEN, 5).

DgramSize = byte_size(Dgram),
case Dgram of 
    <<?IP_VERSION:4, HLen:4, SrvcType:8, TotLen:16, 
      ID:16, Flgs:3, FragOff:13,
      TTL:8, Proto:8, HdrChkSum:16,
      SrcIP:32,
      DestIP:32, RestDgram/binary>> when HLen>=5, 4*HLen=<DgramSize ->
        OptsLen = 4*(HLen - ?IP_MIN_HDR_LEN),
        <<Opts:OptsLen/binary,Data/binary>> = RestDgram,
    ...
end.
<<>>  % The empty bit string, zero length
<<E1>>
<<E1,...,En>>
Ei = Value |
     Value:Size |
     Value/TypeSpecifierList |
     Value:Size/TypeSpecifierList

shimshimshim
()
Последнее исправление: shimshimshim (всего исправлений: 1)
Ответ на: комментарий от faq2

verilog мне понравился, но проблема в том, что все вокруг рекомендуют VDHL, а я его не видел и не понимаю, подойдёт ли он мне или нет.

Shushundr ★★★★
() автор топика
Ответ на: комментарий от Shushundr

VHDL строг и красив.

Verilog ужасен. Не слушайте бредни тех, кто говорит, что он похож на Си. Похож, как отражение в кривом зеркале. По сравнению с VHDL это верное средство отстрелить себе ногу из гранатомёта. Там масса приколов. То, что в VHDL отлавливается на этапе компиляции, в Верилоге выясняется в рантайме. Ребята, видимо здорово пыхнули, прежде чем родить такого кадавра.

akk ★★★★★
()
Ответ на: комментарий от Shushundr

Ну я скорее про класс языков, есть всякие System Verilog ещё и т.п., казалось бы самые что ни на есть языки про провода и прочие устройства.

faq2
()

Была ещё такая поделка как Kaitai Struct, но я так её и не потыкал нигде толком, но и не совсем это похоже то, что ты ищешь.

faq2
()
Ответ на: комментарий от DumLemming

Хоспади, да кто такой Панчул? Тоже мне, стрелок нашёлся.

akk ★★★★★
()

Я конечно извиняюсь, но описание выглядит как абракадабра. Нужен конкретный полноценный пример, входа, обработки и выхода, на вымышленном языке или разметке можно даже. Выхода какого? В смысле результат это будет что? Бинарный блоб, текст или ещё что.

Например в коде инструкции биты, обозначающие код регистра могут находится в несмежных позициях относительно начала инструкции. Нужно уметь описать преобразование имени регистра в код и в биты, и в обратную сторону.

Если вариации фиксированные то lookup табличка на любом языке.

С другой точки зрения, вычисления в стиле арифметики (сложение/вычитание) не требуются. Основные операции - это перестановки, склеивания и разрезания.

Можно работать с битами как просто со строкой, где в значениях только 0 и 1 и манипулировать этой буквально как областью памяти в виде бит, а не байт. Резать, склеивать, переставлять. А потом итог перегонять в любой вид или формат. Ну, то есть абстрагироваться.

Ну или я вапще, ничего не понял :D

LINUX-ORG-RU ★★★★★
()
Ответ на: комментарий от buddhist

Текст стандарта ГОСТ Р 50754-95 на VHDL содержит 142 страницы и начинается с описания BNF для того, чтобы после описывать язык. То есть, чтобы написать самому потребуется:
) подготовить предварительный стандарт на символы
) подготовить предварительный стандарт на кодировку
) написать язык для описания синтаксиса
) написать для него парсер и семантику
) написать язык для проводов
) написать анализатор и для него
) написать 6-7 документов, чтобы описать всё это
данунафиг, слишком много работы до начала работы (описывания собственно моих битов)

Shushundr ★★★★
() автор топика
Последнее исправление: Shushundr (всего исправлений: 1)
Ответ на: комментарий от Shushundr

Вы тут на ЛОРе фантазеры, конечно: я нигде не предлагал тебе реализовать VHDL

buddhist ★★★★★
()
Ответ на: комментарий от nerfur

А есть варианты? Фишка в том, что на форумах редко пишут объективные ответы(либо пишут через призму личного мнения), поэтому понять, подходит тот или иной инструмент под конкретную задачу или нет, зачастую можно только попробовав его самому.

u5er ★★
()
Ответ на: комментарий от u5er

Гипотетически, могут дать гиперссылку на документ-исследование вопроса (ну или на статью в интернете).

Shushundr ★★★★
() автор топика
Ответ на: комментарий от u5er

конечно, сейчас модно заходить во все чаты в телеграме отдаленно связанные в айти, задавать вопрос не по теме, сраться с ответившими и потом обсуждать какое токсичное ру-коммунити)))

nerfur ★★★
()
Последнее исправление: nerfur (всего исправлений: 1)

должен позволять описывать отдельные биты, а так же способы их группировки в битовые поля

Описывать как? Декларативано? Потому что алгоритмически может абсолютно любой язык.

no-such-file ★★★★★
()
Ответ на: комментарий от Shushundr

Я вообще не в теме, если тебе это нужно для каких-то практических применений. Но если речь про чисто академические вещи, то я бы взял Ocaml, или ЛИСП. В первом развитые типы и возможность описывать функциональные взаимоотношения, а второй в принципе можно приспособить для всего накатав DSL под задачу.

no-such-file ★★★★★
()
Ответ на: комментарий от no-such-file

я тут хожу и пиарю Ocaml и самое главное ЛИСП

ну ок.

Shushundr ★★★★
() автор топика
Закрыто добавление комментариев для недавно зарегистрированных пользователей (со score < 50)