Частина 22 – Хакінг ADC
Для повного змісту змісту всіх уроків, будь ласка, натисніть нижче, оскільки це надасть вам короткий зміст кожного уроку, а також теми, які будуть розглянуті.
Щоб підсумувати знову, ADC є тим же, що і ADD, окрім того, що воно додає 1, якщо флаг кара встановлений. Нам необхідно особливу увагу звернути на CPSR або реєстр стану, коли ми працюємо з ADC.
Давайте знову переглянемо свій код:
Ми додаємо 100 десятичне в r1, 4,294,967,295 в r2, 100 десятичне в r3 і 100 десятичне в r4. Потім ми додаємо r1 і r2 і розміщуємо в r0 і потім додаємо r3 і r4 і розміщуємо в r5.
Ми запускаємо програму і крокуємо до місця, де ми переміщаємо 4,294,967,295 в r2. Давайте хакуємо цей значення в r2 і змінимо його на 100 десятичне.
Давайте крокуємо кілька разів далі:
Також ми додаємо 100 десятичне і 100 десятичне разом в r3 і r4 і отримуємо 200 десятичне в r5! Чи пам'ятаєте ви минулу неделю, коли ми мали 201? Давайте розглянемо CPSR нижче.
Ми знову повинні пам'ятати, що біти 31, 20, 29 і 28 в CPSR вказують наступне:
біт 31 - N = Флаг Негативного
біт 30 - Z = Флаг Нульовий
біт 29 - C = Флаг Кара
біт 28 - V = Флаг Перезавантаження
Ми бачимо CPSR в 10 гекс. Найвисокі біти 10 гекс у бінарному вигляді 0001.
Отже, якщо значення в бінарному вигляді було 0001 біт 31, 30, 29 і 28 (NZCV) це означало б:
Флаг Негативного не встановлений
Флаг Нульовий не встановлений
Флаг Кара не встановлений
Флаг Перезавантаження встановлений
Як ми можемо побачити, флаг кара не був встановлений. Я сподіваюся, ви зможете засвоїти і зрозуміти кожну з цих дуже простих операцій і як вони впливають на CPSR. Будь ласка, візьміть час і перегляньте попередній урок для порівняння.
Наступна неділя ми вийдемо в SUB.