Главная / Программирование /
Common Intermediate Language и системное программирование в Microsoft .NET / Тест 5
Common Intermediate Language и системное программирование в Microsoft .NET - тест 5
Упражнение 1:
Номер 1
Язык Common Intermediate Language является независимым от аппаратной платформы:
Ответ:
 (1) объектно-ориентированным транслятором 
 (2) объектно-ориентированным интерпретатором 
 (3) объектно-ориентированным компилятором 
 (4) объектно-ориентированным ассемблером 
Номер 2
Инструкции CIL можно разделить на следующие основные группы:
Ответ:
 (1) инструкции общего назначения 
 (2) инструкции для работы с объектной моделью 
 (3) инструкции для генерации и обработки исключений 
 (4) неверифицируемые инструкции 
Номер 3
Инструкция call
, вызывающая метод, имеет встроенный операнд, задающий:
Ответ:
 (1) номер переменной 
 (2) номер константы 
 (3) положение секций 
 (4) токен метаданных 
Упражнение 2:
Номер 1
Операнд none
имеет размер в байтах равный:
Ответ:
 (1) 4 
 (2) 0 
 (3) 2 
 (4) 1 
Номер 2
Операнд int64
имеет размер в байтах равный:
Ответ:
 (1) 8 
 (2) 4 
 (3) 2 
 (4) 1 
Номер 3
Операнд token
имеет размер в байтах равный:
Ответ:
 (1) 0 
 (2) 1 
 (3) 2 
 (4) 4 
 (5) 8 
Упражнение 3:
Номер 1
Какая инструкция загружает на стек вычислений значение первого аргумента метода:
Ответ:
 (1) arglist
 
 (2) ldarg.0
 
 (3) call System.String::Compare
 
 (4) isinst System.String
 
Номер 2
В каком случае будет произведена динамическая проверка типа объекта на стеке вычислений:
Ответ:
 (1) /* 22 | 0000803F */ ldc.r4 1.0
 
 (2) /* FE 00 */ arglist
 
 (3) /* 28 | (06)0000CD */ call System.String::Compare
 
 (4) /* 75 | (02)00000F */ isinst System.String
 
Номер 3
В каком случае на стек вычислений будет загружен специальный описатель массива переменных параметров метода:
Ответ:
 (1) /* 28 | (06)0000CD */ call System.String::Compare
 
 (2) /* 75 | (02)00000F */ isinst System.String
 
 (3) /* 22 | 0000803F */ ldc.r4 1.0
 
 (4) /* 1F | 10 */ ldc.i4.s 16
 
 (5) /* 02 */ ldarg.0
 
 (6) /* FE 00 */ arglist
 
Упражнение 4:
Номер 1
Если инструкция, следующая за инструкцией br
, имеет абсолютный адрес next_addr
, то адрес перехода rel_addr
вычисляется так:
Ответ:
 (1) reladdr = target_addr + next_addr
 
 (2) reladdr = target_addr - next_addr
 
 (3) reladdr := target_addr - next_addr
 
 (4) reladdr := target_addr + next_addr
 
Номер 2
Ограничениями на последовательности инструкций, введеными для упрощение JIT-компилятора являются следующие:
Ответ:
 (1) ограничение на структуру стека вычислений 
 (2) ограничение на размер стека вычислений 
 (3) ограничение на системные переходы 
 (4) ограничение на обратные переходы 
Номер 3
Когда JIT-компилятор доходит до инструкции ldc.0
, расположенной непосредственно после инструкции безусловного перехода br L2, он:
Ответ:
 (1) не может определить для нее стек вычислений 
 (2) не может определить для нее буфер стека вычислений 
 (3) не может определить для нее схему стека вычислений 
 (4) не может определить для нее структуру стека вычислений 
Упражнение 5:
Номер 1
Какие инструкции языка CIL, служат для организации вычислений:
Ответ:
 (1) арифметические инструкции 
 (2) инструкции для загрузки и сохранения значений 
 (3) инструкции для удаления значений 
 (4) инструкции для организации передачи управления 
Номер 2
Для обмена значениями между стеком вычислений и памятью предназначены следующие инструкции:
Ответ:
 (1) инструкции для загрузки и сохранения значений 
 (2) системные инструкции 
 (3) инструкции для организации буфера 
 (4) арифметические инструкции 
Номер 3
Инструкция ldnull
имеет следующий код:
Ответ:
 (1) 0x15 
 (2) 0x14 
 (3) 0x22 
 (4) 0x20 
 (5) 0x21 
 (6) 0x23 
Упражнение 6:
Номер 1
Сколько существует вариантов инструкций для работы с переменными и параметрами:
Ответ:
 (1) 0 
 (2) 1 
 (3) 2 
 (4) 3 
Номер 2
Код 0xDF соответствует инструкции:
Ответ:
 (1) stind.i
 
 (2) stind.r8
 
 (3) stind.r4
 
 (4) stind.i1
 
Номер 3
Инструкция pop
имеет следующий код:
Ответ:
 (1) 0x25 
 (2) 0x10 
 (3) 0x4E 
 (4) 0x57 
 (5) 0x26 
 (6) 0x11 
Упражнение 7:
Номер 1
Арифметические инструкции можно разделить на следующие категории:
Ответ:
 (1) унарные операции 
 (2) инструкция ckfinite
 
 (3) инструкции преобразования значений 
 (4) бинарные операции 
Номер 2
Среди базовых бинарных операций сложением является инструкция:
Ответ:
 (1) div.un
 
 (2) mul
 
 (3) xor
 
 (4) add
 
Номер 3
Какие инструкции выполняют унарные арифмитические операции:
Ответ:
 (1) neg
 
 (2) clt
 
 (3) ceq
 
 (4) shr
 
 (5) add.ovf
 
 (6) not
 
Упражнение 8:
Номер 1
Инструкция ckfinite
имеет код:
Ответ:
 (1) 0x65 
 (2) 0xD 
 (3) 0xC3 
 (4) 0x5E 
Номер 2
Какая инструкция интерпретирует целое значение, лежащее на вершине стека, как не имеющее знака и преобразует его к вещественному типу:
Ответ:
 (1) conv.i2
 
 (2) conv.r8
 
 (3) conv.ovf.i
 
 (4) conv.r.un
 
Номер 3
Инструкция conv.ovf.u8.un
имеет следующий код:
Ответ:
 (1) 0x8B 
 (2) 0x83 
 (3) 0x87 
 (4) 0x82 
 (5) 0x8A 
 (6) 0x89 
Упражнение 9:
Номер 1
Инструкции для организации передачи управления можно разделить на следующие категории:
Ответ:
 (1) инструкции условного перехода 
 (2) инструкция множественного выбора switch
 
 (3) инструкция вызова метода call
 
 (4) инструкции безусловного перехода 
 (5) инструкция возврата из метода ret
 
Номер 2
Сколько существует инструкций безусловного перехода?
Ответ:
 (1) 0 
 (2) 1 
 (3) 2 
 (4) 3 
Номер 3
Безусловными инструкциями являются:
Ответ:
 (1) br.s
 
 (2) brfalse.s
 
 (3) brtrue
 
 (4) ble
 
 (5) bgt.un.s
 
 (6) br.
 
Упражнение 10:
Номер 1
Какие инструкции потребляют со стека вычислений один операнд и, в зависимости от его значения, осуществляют или не осуществляют переход по указанному во встроенном операнде относительному адресу:
Ответ:
 (1) базовые инструкции условного перехода 
 (2) дополнительные инструкции условного перехода 
 (3) дополнительные длинные инструкции условного перехода 
 (4) дополнительные короткие инструкции безусловного перехода 
Номер 2
Диаграмма стека для базовых инструкций условного перехода выглядит следующим образом:
Ответ:
 (1) ... , value -> ...
 
 (2) ... , value1 , value2 -> ...
 
 (3) ... , value1 , value2 ,value3 -> ...
 
 (4) ... , value1 , value2 , value3 ,value4 -> ...
 
Номер 3
Инструкция beq
имеет следующий код:
Ответ:
 (1) 0x3C 
 (2) 0x3D 
 (3) 0x3E 
 (4) 0x3B 
 (5) 0x3F 
 (6) 0x42 
Упражнение 11:
Номер 1
Какая инструкция имеет следующее описание: ceq; brtrue.s
?
Ответ:
 (1) 0x2F 
 (2) 0x2E 
 (3) 0x31 
 (4) 0x32 
Номер 2
Какая инструкция имеет следующее описание: clt.un; brtrue.s
?
Ответ:
 (1) 0x36
 
 (2) bgt.un.s
 
 (3) bge.un.s
 
 (4) blt.un.s
 
Номер 3
Какая инструкция имеет код 0x42?
Ответ:
 (1) call
 
 (2) ret
 
 (3) ble.un
 
 (4) switch
 
 (5) bge.s
 
 (6) bge.un.s
 
Упражнение 12:
Номер 1
Какая иструкция выполняет вызов метода:
Ответ:
 (1) 0x2A 
 (2) 0x28 
 (3) 0x42 
 (4) 0x37 
Номер 2
Какая инструкция имеет код 0x2A?
Ответ:
 (1) call
 
 (2) bgt.un.s
 
 (3) ret
 
 (4) ble.un
 
Номер 3
Осуществляет возврат из метода следующая инструкция:
Ответ:
 (1) ret
 
 (2) call
 
 (3) 0x42
 
 (4) switch
 
 (5) 0x28
 
 (6) 0x2A