Mips — различия между версиями

Материал из InformationSecurity WIKI
Перейти к: навигация, поиск
м (Инструкции)
м (Инструкции)
Строка 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]
 +
|
 +
|}
  
 
===Системные вызовы===
 
===Системные вызовы===

Версия 15: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 системный вызов

Вики