Подтипы

Материал из Compilers Wiki
Перейти к: навигация, поиск

Промежуточный язык имеет минимальную реализацию подтипирования - только для целочисленных типов. Любое значение типа l (long) можно использовать в w (word) контексте. В этом случае используются только 32 младших значащих бита слова.

The IL has a minimal subtyping feature, for integer types only. Any value of type l can be used in a w context. In that case, only the 32 least significant bits of the word value are used.

Обратите внимание, что это противоположность обычным подтипированиям для целых чисел (в C мы можем безопасно использовать int, где ожидается long). Значение long не может использоваться в контексте w (word). Причина заключается в том, что слово может быть знаковое (signed) или беззнаковое (unsigned), поэтому приведение его к long может быть выполнено двумя способами: либо с помощью расширения с заполнением нулями старших бит, либо с помощью расширения знака.

Make note that it is the opposite of the usual subtyping on integers (in C, we can safely use an int where a long is expected). A long value cannot be used in word context. The rationale is that a word can be signed or unsigned, so extending it to a long could be done in two ways, either by zero-extension, or by sign-extension.



Источник c9x.me