Mips — различия между версиями
Материал из InformationSecurity WIKI
Drakylar (обсуждение | вклад) м (→Инструкции) |
Drakylar (обсуждение | вклад) м (→Инструкции) |
||
Строка 51: | Строка 51: | ||
Полный список на вики или в ссылках. | Полный список на вики или в ссылках. | ||
Сюда вписываю то, что потребовалось при решении root-me. | Сюда вписываю то, что потребовалось при решении root-me. | ||
+ | |||
+ | |||
+ | {| class="wikitable" | ||
+ | !colspan="2"|Список инструкций | ||
+ | |- | ||
+ | |'''Название''' | ||
+ | |'''Расшифровка''' | ||
+ | |'''Формула''' | ||
+ | |- | ||
+ | |la x1,x2 | ||
+ | |Load address | ||
+ | |x1 = x2 | ||
+ | |- | ||
+ | |jal(r) x1 | ||
+ | |Jump After Load Address | ||
+ | |goto x1 | ||
+ | |- | ||
+ | |nop | ||
+ | |No OPeration | ||
+ | |- | ||
+ | |addiu x1,x2,x3 | ||
+ | |Add Int Unsigned (беззнаковое сложение целых чисел) | ||
+ | |x1 = x2 + x3 | ||
+ | |- | ||
+ | |move x1,x2 | ||
+ | | | ||
+ | |x1 = x2 | ||
+ | |- | ||
+ | |syscall | ||
+ | |System call (системный вызов, см пункт системных вызовов) | ||
+ | |goto syscall($v0) | ||
+ | |- | ||
+ | |subu x1,x2,x3 | ||
+ | |sub unsigned (беззнаковое вычитание) | ||
+ | | x1 = x2 - x3 | ||
+ | |- | ||
+ | |sw x1,x2(x3) | ||
+ | |Store Word | ||
+ | |memory[x3 + x2] = x1 | ||
+ | |- | ||
+ | |lw x1,x2(x3) | ||
+ | |Load Word | ||
+ | |x1 = memory[x3 + x2] | ||
+ | | | ||
+ | |} | ||
===Системные вызовы=== | ===Системные вызовы=== |
Версия 19:19, 31 января 2020
Часть статьи скопирована с вики с комментариями.
Содержание
Описание
Регистры с описанием
Название | Номер | Применение |
---|---|---|
$zero | $0 | всегда хранит 0 |
$at | $1 | временный регистр для языка ассемблера |
$v0—$v1 | $2—$3 | значения функций и выражений ($v0 отвечает за вызов syscall) |
$a0—$a3 | $4—$7 | аргументы функций |
$t0—$t7 | $8—$15 | временные |
$s0—$s7 | $16—$23 | сохраненные временные значения |
$t8—$t9 | $24—$25 | временные |
$k0—$k1 | $26—$27 | зарезервирована для ядра операционной системы |
$gp | $28 | глобальный указатель |
$sp | $29 | указатель стека |
$fp | $30 | указатель фрейма |
$ra | $31 | адрес возврата |
Инструкции
Полный список на вики или в ссылках. Сюда вписываю то, что потребовалось при решении root-me.
Список инструкций | |||
---|---|---|---|
Название | Расшифровка | Формула | |
la x1,x2 | Load address | x1 = x2 | |
jal(r) x1 | Jump After Load Address | goto x1 | |
nop | No OPeration | ||
addiu x1,x2,x3 | Add Int Unsigned (беззнаковое сложение целых чисел) | x1 = x2 + x3 | |
move x1,x2 | x1 = x2 | ||
syscall | System call (системный вызов, см пункт системных вызовов) | goto syscall($v0) | |
subu x1,x2,x3 | sub unsigned (беззнаковое вычитание) | x1 = x2 - x3 | |
sw x1,x2(x3) | Store Word | memory[x3 + x2] = x1 | |
lw x1,x2(x3) | Load Word | x1 = memory[x3 + x2] |
Системные вызовы
_UAPI_ASM_UNISTD_H
_MIPS_SIM_ABI32
_MIPS_SIM_ABI64
_MIPS_SIM_NABI32
Особые техники обхода защиты
Ссылки
Система команд процессора MIPS R3000 игровой приставки SONY PLAYSTATION
Обьяснение на английском откуда берется 4001 системный вызов