Архитектура вычислительных систем



бет5/5
Дата05.03.2023
өлшемі1,31 Mb.
#71719
түріЛабораторная работа
1   2   3   4   5
Байланысты:
include

Изменение исходного кода

  1. Изменение глобальных переменных, на локальные


Добавились команды:
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]



  1. Изменение обращения к массиву через указатели:




Никаких изменений в дизассемблированном коде не наблюдается.




Ответы на вопросы:
Найдите и отметьте в дизассемблере все команды, которые обращаются к этим переменным, для каждой команды укажите, к какой именно переменной она обращается.
Обращение к переменной 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.
Так же были изучены типы адресации к операндам. Получили навыки по классификации данных типов.
Были изучены основы декодирования байтов инструкций машинного кода.

Достарыңызбен бөлісу:
1   2   3   4   5




©emirsaba.org 2024
әкімшілігінің қараңыз

    Басты бет