Понимание точек в ключевых словах MSIL (CIL)

Я работаю над раскрашивателем кода MSIL (CIL), хотя я не так хорошо знаком с MSIL.

Я нашел список всех ключевых слов в Common Language Infrastructure. (командная строка).

Эти ключевые слова включают такие элементы, как add, .file, conv.i4 и unaligned..

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

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


person Jonathan Wood    schedule 18.10.2014    source источник


Ответы (1)


Точка является частью этих инструкций (я не знаю, почему). Есть еще несколько подобных префиксных инструкций, например unaligned., volatile., constrained., readonly. и tail.. (Я не уверен, что перечислил их все, но дело в том, что ваш парсер должен их распознать.)

В документации по volatile. особо упоминается, что за ним должен следовать хотя бы один пробел перед инструкцией, к которой он применяется. Например:

volatile. ldind.i4 // Correct

а также

volatile.ldind.i4 // Syntax error

Они взяты из книги Expert .NET 2.0 IL Assembler Сержа Лидина (которая в значительной степени является исчерпывающим справочником по IL).

person xxbbcc    schedule 18.10.2014
comment
Да, у меня есть полный список из источника, на который я ссылался. Если мой синтаксический анализатор распознает их, это не проблема, если, как вы утверждаете, после должен следовать пробел. Просто хочу убедиться в правильности результатов. Спасибо. - person Jonathan Wood; 19.10.2014
comment
Да, в книге Лидина упоминается, что синтаксис ILAsm требует, чтобы префиксные инструкции были отделены от следующей инструкции по крайней мере пробелом. Это относится ко всем префиксным инструкциям. - person xxbbcc; 19.10.2014