Изменение исходного кода
Изменение глобальных переменных, на локальные
Добавились команды:
00BD1003 83 EC 28 sub esp,28h
Изменились смещения в командах:
00991023 7C 0C jl main+31h (0991031h)
00BD1016 7C 0C jl main+24h (0BD1024h)
0099102F EB 0B jmp main+3Ch (099103Ch)
00BD1022 EB 0B jmp main+2Fh (0BD102Fh)
Поменялось обращение к массиву:
00BD102F 89 44 8D D8 mov dword ptr cMas[ecx*4],eax
0099103C 8B 55 FC mov edx,dword ptr [ebp-4]
Изменение обращения к массиву через указатели:
Никаких изменений в дизассемблированном коде не наблюдается.
Ответы на вопросы:
Найдите и отметьте в дизассемблере все команды, которые обращаются к этим переменным, для каждой команды укажите, к какой именно переменной она обращается.
Обращение к переменной i:
00991052 89 0D A8 33 99 00 mov dword ptr [i (09933A8h)],ecx
Обращение к массиву cMas:
0099104C 89 82 80 33 99 00 mov dword ptr cMas (0993380h)[edx],eax
Для i указано два операнда, используется регистровая и абсолютная адресации.
Для cMas указано два операнда, используется косвенно-регистровая со смещением и регистровая адресации
Вывод: В данной работы мы изучили базовые принципы работы с машинным кодом транслятора, на примере простейшего кода на языке C.
Так же были изучены типы адресации к операндам. Получили навыки по классификации данных типов.
Были изучены основы декодирования байтов инструкций машинного кода.
Достарыңызбен бөлісу: |