Как стать автором
Обновить

Комментарии 20

ну наверное самый правильный вариант собрать gcc для MIPS самому что то типа
./configure --target=mips-elf --enable-languages=c ... make
В общем вот здесь описано www.linux-mips.org/wiki/Toolchains
НЛО прилетело и опубликовало эту надпись здесь
Нет. $ra будет иметь адрес уже следующей инструкции, это да. Но она не выполняется.
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
Ух ты. Вот что значит учиться на эмуляторах.
Спасибо.
Эмуляторы тоже реализуют delay-slot'ы.
Вот это мне всегда разрывало наглухо мозг в MIPS, особенно если пытаешься что-то дизассемблировать. Идет код, условие, джамп после джампа еще условие и попробуй угадаи — за первым джампом инструкция относится к первому условию или второму :-\ Я после x86 ассма ваще не могу так работать ))
ну это вообще то во многих RISC архитекторах. сделано чтобы не сбрасывать конвеер, и соответственно не терять лишние такты процессора
Да это понятно. Просто если надо чето-то где-то посмотреть в x86 — открыл, посмотрел, все как на ладоне. На уровне автомата, не задумываясь даже. Когда встречаешься с сабжем и надо чото где-то посмотреть и понять — тут уже приходится гуглить синтаксис, и вообще вникать в полную суть. Не привычно, короче говоря. Не плохо, не хорошо — просто не привычно.
Тут конечно согласен! Все дело привычки, сам когда то впервые столкнулся с delay слотами на SPARCe и долго не мог понять. И 86 ассемблер конечно более известен и привычен. Но в результате после некоторой медитации, risc и становятся более простыми и логичными чем 86, по крайней мере мне так кажется.
НЛО прилетело и опубликовало эту надпись здесь
Да, верно, прошу прощения.
Перезалил картинку.
эх, времена Sony Playstation, Playstation 2
На счет syscall не очень понял. Если я правильно понимаю то это команда генерирующая системный вызов. Тогда почему это " используется для обращения к операционной системе для произведения действий, которые процессор сам не в состоянии выполнить'. И привели номера конкретных системных вызовов, может эти номера вызовов записаны в ABI и конкретно MARS их симулирует?
Сам сейчас занимаюсь переносом кода на MIPS нашего проекта, поэтому данная тема очень интересна. Спасибо за статью!
MARS эмулирует системные вызовы, он не делает их в реальности. Но процессы подготовки параметров и вывода результата близки к железным имплементациям.

Если бы использовали настоящий процессор, то выполняли бы системные вызовы к операционной системе, работающей на нашем процессоре.
Может тут всё же более «хардварный» вызов. Вроде «вызвать функцию номер 1...12». А что именно делает эта функция — уже забота ОС. В MARS может быть так, как вы описали. но другие вроде как не обязаны в точности следовать этому описанию, не?
Тут наверное нужно сказать так, что в отличие от вызова функции (по номеру или по имени) системный вызов транслируется ядру ОС, соответственно первое — не нужно знать адрес функции при линковке программы, второе — процессор переходит в защищенный режим (режим ядра). Если первое можно сделать программно то для второго и предназначена команда syscall
У вас неправильная информация о регистрах. не пойму откуда вы взяли описание. чтобы было понятней что я имею ввиду. регистр fp имеет $30 значение. а у вас это s8 — не порядок.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории