Главная / Программирование /
Common Intermediate Language и системное программирование в Microsoft .NET / Тест 6
Common Intermediate Language и системное программирование в Microsoft .NET - тест 6
Упражнение 1:
Номер 1
Язык CIL содержит богатый набор инструкций, предназначенных для поддержки объектной модели, который можно на следующие основные категории:
Ответ:
 (1) инструкции для работы с объектами 
 (2) инструкции для работы с массивами 
 (3) инструкции для работы с типами-значениями 
 (4) инструкции для работы с типизированными ссылками 
Номер 2
Диаграмма стека для инструкции newobj
:
Ответ:
 (1) ... , obj, arg1, ... , argN -> ... , retVal
 
 (2) ... , arg1, ... , argN -> ... , obj
 
 (3) ... -> ... , obj
 
 (4) ... , obj -> ... , obj
 
Номер 3
Какая инструкция имеет код 0x74:
Ответ:
 (1) castclass
 
 (2) isinst
 
 (3) newobj
 
 (4) idfld
 
 (5) sdfld
 
 (6) callvirt
 
Упражнение 2:
Номер 1
Какая инструкция загружает значение поля объекта:
Ответ:
 (1) 0x7B 
 (2) sdfld
 
 (3) 0x7D 
 (4) idfld
 
Номер 2
Загружает адрес статического поля объекта следующая инструкция:
Ответ:
 (1) idsflda
 
 (2) sdfld
 
 (3) 0x80 
 (4) 0x7F 
Номер 3
Диаграмма стека для инструкции callvirt
:
Ответ:
 (1) ... , arg1, ... , argN -> ... , retVal
 
 (2) ... , obj, ... , argN -> ... , retVal
 
 (3) ... , obj, arg1, ... , ... , retVal
 
 (4) ... , obj, arg1, ... , argN -> ...
 
 (5) obj, arg1, ... , argN -> ...
 
 (6) ... , obj, arg1, ... , argN -> ... , retVal
 
Упражнение 3:
Номер 1
Инструкция callvirt
имеет следующий код:
Ответ:
 (1) 0x80 
 (2) 0x7B 
 (3) 0x6F 
 (4) 0x72 
Номер 2
Какая инстукция создает на вершине стека объект-строку:
Ответ:
 (1) 0x72 
 (2) callvirt
 
 (3) 0x6F 
 (4) ldstr
 
Номер 3
Диаграмма стека для инструкции ldstr
:
Ответ:
 (1) ... -> ... , arg
 
 (2) ... -> ... , obj
 
 (3) arg, ... -> ... , obj
 
 (4) ... -> ... , objN
 
Упражнение 4:
Номер 1
Инструкция newarr выделяет память под одномерный массив, индексируемый:
Ответ:
 (1) с единицы 
 (2) со ста 
 (3) с тысячи 
 (4) с нуля 
Номер 2
Диаграмма стека для инструкции newarr
:
Ответ:
 (1) ... , num -> array
 
 (2) ... , num -> ... , array
 
 (3) num -> ... , array
 
 (4) ... , ... , array
 
Номер 3
Какая инструкция загружает размер одномерного массива на стек вычислений:
Ответ:
 (1) newarr
 
 (2) ldlen
 
 (3) 0x8D 
 (4) ldelema
 
 (5) 0x8E 
 (6) 0x8F 
Упражнение 5:
Номер 1
Инструкции ldelem
предназначены для загрузки значения элемента:
Ответ:
 (1) многомерного массива на стек вычислений 
 (2) одномерного массива на стек вычислений 
 (3) двухмерного массива на стек вычислений 
 (4) трехмерного массива на стек вычислений 
Номер 2
Инструкция ldelem.u2
имеет код:
Ответ:
 (1) 0x96 
 (2) 0x93 
 (3) 0x98 
 (4) 0x92 
Номер 3
Диаграмма стека для инструкций ldelem
выглядит так:
Ответ:
 (1) array, index -> ... , value
 
 (2) ... , array, index -> ... , value
 
 (3) ... , array, value
 
 (4) ... , array, index -> ...
 
Упражнение 6:
Номер 1
Диаграмма стека для инструкции ldelema
выглядит следующим образом:
Ответ:
 (1) ... , array, index -> ... , value
 
 (2) ... , array, index, value -> ...
 
 (3) ... , array -> ... , length
 
 (4) ... , array, index -> ... , addr
 
Номер 2
Диаграмма стека для инструкций stelem
:
Ответ:
 (1) ... , array, index, value -> ...
 
 (2) ... , array, index, ...
 
 (3) array, index, value -> ...
 
 (4) ... , array, value -> ...
 
Номер 3
Инструкция stelem.i8
имеет код:
Ответ:
 (1) 0x9C 
 (2) 0x9F 
 (3) 0xA0 
 (4) 0xA1 
 (5) 0xA2 
 (6) 0x9D 
Упражнение 7:
Номер 1
Инструкция initobj
потребляет со стека вычислений адрес значения:
Ответ:
 (1) ... , addr -> ...
 
 (2) ... , addr ->
 
 (3) addr -> ...
 
 (4) ... , ... addr ->
 
Номер 2
Какая инструкция заполняет все поля значения нулями:
Ответ:
 (1) sizeof
 
 (2) initobj
 
 (3) cpobj
 
 (4) stobj
 
Номер 3
Какая инструкция загружает на стек размер значения указанного типа:
Ответ:
 (1) ldobj
 
 (2) box
 
 (3) unbox
 
 (4) ldtoken
 
 (5) sizeof
 
 (6) cpobj
 
Упражнение 8:
Номер 1
Диаграмма стека для инструкций sizeof
:
Ответ:
 (1) ... -> ... ,
 
 (2) ... -> ... , size
 
 (3) ... , size
 
 (4) ... ->
 
Номер 2
Диаграмма стека для инструкций stobj
:
Ответ:
 (1) ..., addr, val0bj ->...
 
 (2) ..., addr, -> ..., val0bj
 
 (3) ..., destAddr, srcAddr ->...
 
 (4) ..., obj ->..., ptr
 
Номер 3
Какая инструкция имеет следующую диаграмму стека: ..., obj ->..., ptr
?
Ответ:
 (1) ldtoken
 
 (2) unbox
 
 (3) box
 
 (4) stobj
 
Упражнение 9:
Номер 1
Какая инструкция имеет следующую диаграмму стека: ..., value ->..., obj
?
Ответ:
 (1) unbox
 
 (2) initobj
 
 (3) sizeof
 
 (4) box
 
Номер 2
Какая инструкция применяется для работы с библиотекой рефлексии:
Ответ:
 (1) stobj
 
 (2) sizeof
 
 (3) ldtoken
 
 (4) initobj
 
Номер 3
Инструкция ldtoken
имеет код:
Ответ:
 (1) 0x8C 
 (2) 0x79 
 (3) 0xD0 
 (4) 0x71 
 (5) 0x70 
 (6) 0x15 
Упражнение 10:
Номер 1
Типизированные ссылки в системе типов .NET реализованы исключительно для поддержки некоторых особенностей синтаксиса и семантики языка:
Ответ:
 (1) C# 
 (2) Visual Basic .NET 
 (3) C++ 
 (4) Basic 
Номер 2
Сколько инструкций CIL предусмотрено для работы с типизированными ссылками:
Ответ:
 (1) 0 
 (2) 1 
 (3) 2 
 (4) 3 
Номер 3
Инструкция mkrefany
предназначена для:
Ответ:
 (1) создания типизированных ссылок 
 (2) сохранения типизированных ссылок 
 (3) удаления типизированных ссылок 
 (4) использования типизированных ссылок 
Упражнение 11:
Номер 1
Инструкция mkrefany
имеет код:
Ответ:
 (1) 0xC2 
 (2) 0xC3 
 (3) 0xC6 
 (4) 0xC5 
Номер 2
Диаграмма стека для инструкций mkrefany
:
Ответ:
 (1) ... , ptr -> ... , typedRef
 
 (2) ... , typedRef -> ... , ptr
 
 (3) ... , typedRef -> ... , type
 
 (4) ... , typedRef -> ...
 
Номер 3
Загружает токен, хранящийся в типизированной ссылке следующая инструкция:
Ответ:
 (1) refanytype
 
 (2) sizeof
 
 (3) refanyval
 
 (4) mkrefany
 
 (5) ldtoken
 
Упражнение 12:
Номер 1
Диаграмма стека для инструкций refanytype
:
Ответ:
 (1) ... , typedRef ->
 
 (2) typedRef -> ... , type
 
 (3) ... , typedRef -> ... , type
 
 (4) ... , typedRef -> ...
 
Номер 2
Инструкция refanyval
имеет код:
Ответ:
 (1) 0xC0 
 (2) 0xC1 
 (3) 0xC2 
 (4) 0xC3 
Номер 3
Диаграмма стека для инструкций refanyval
:
Ответ:
 (1) typedRef -> ... , ptr
 
 (2) ... , typedRef -> ...
 
 (3) ... , typedRef -> ... , obj
 
 (4) ... , typedRef -> ... , ptr
 
 (5) ... , typedRef -> obj