самопроменящ се код в асемблиране

Как да напиша самопроменящ се код в сборка на mips 32, който кара една функция да извиква друга функция (без да добавя извикване на функция в нея)? Трябва да променя кода на функцията по време на изпълнение, така че да извиква другата функция.


person Daniel Cook    schedule 27.03.2015    source източник


Отговори (1)


В името на всичко свято НЕ!

  1. Асемблерът често е вграден в ROM, така че не работи.
  2. Всяка ОС със сигурност, струваща пукната пара, няма да ви позволи да променяте кодови сегменти или да изпълнявате данни.
  3. Има специален ад, запазен за тези, които го правят, ограден от проклятията на тези от нас, които някога е трябвало да поддържат проклетите неща!

MIPS има режим на регистриране за скокове -

    jr $rs

Преместете адреса, до който искате да преминете, в регистъра и преминете към него. Това е функционален еквивалент на натискане на адреса в стека и извършване на връщане. Ако искате да извикате функцията, поставете jump в нейната собствена подпрограма, така че връщането от извиканата функция да се върне обратно към извикващия.

person Mike    schedule 27.03.2015