Что это за нестандартный синтаксис структурной упаковки и подается в GCC? - PullRequest
1 голос
/ 13 мая 2019

Я немного ошеломлен каким-то кодом, который связан со сторонней кодовой базой, с которой я работаю.Весь код написан на C или ассемблере, за исключением ряда файлов, придерживающихся синтаксиса, описанного ниже.Я не могу найти никакой документации по этому синтаксису, но GCC проглотит его без проблем.Это GCC 8, с которым я работаю.Syntac должен быть некоторым расширением GCC.Было бы очень хорошо, если бы кто-нибудь мог объяснить мне, что это за расширение и где оно задокументировано.

Код, очевидно, определяет типы структуры с упаковкой и использует такой синтаксис:

  • Строки комментариев начинаются с "-"
  • Ключевыми словами являются "block", "padding", "field" и "field_high", возможно, больше.Типичный фрагмент кода выглядит следующим образом:
block <BLOCK_NAME> {
    field <FIELD_NAME_NO_1> 1
    field <FIELD_NAME_NO_2> 1
    padding 8
    field_high <FIELD_NAME_NO_3> 6
}

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

Файлы, содержащие этот вид кода, чаще всего имеют расширение «.bf», в то время как «.c» также может встречаться.В некоторых файлах # include ссылается на обычные заголовки C, в то время как в некоторых обычных файлах C #include ссылается на файлы ".bf".

Ответы [ 2 ]

0 голосов
/ 14 мая 2019

Генератор битовых полей задокументирован здесь http://research.davidcock.fastmail.fm/papers/Cock_08.pdf

0 голосов
/ 14 мая 2019

Быстрый взгляд на каталог tools в репозитории Git обнаружил меня bitfield_gen.py , который утверждает, что он является генератором кода для "структур битовых полей". Я полагаю, это то, что означает .bf.

В tools / helpers.cmake есть несколько функций CMake для построения целей битового поля. Это, вероятно, будет иметь смысл для людей, более знакомых с CMake, чем я.

...