Главная / Программирование /
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