MIPS - это важно? - PullRequest
       53

MIPS - это важно?

25 голосов
/ 19 сентября 2008

Мой вопрос: язык программирования MIPS, который полезно знать?

Я студент CS и беру урок ассемблера, который посвящен MIPS. Мне очень удобно писать на языках высокого уровня, но Mips меня немного расстроил.

Является ли MIPS чем-то, на чем я действительно должен сосредоточиться и попытаться полностью понять это? Поможет ли это мне в будущем?

Ответы [ 12 ]

34 голосов
/ 19 сентября 2008

В какой-то момент (в 90-е годы) процессоры на базе MIPS стали самыми продаваемыми процессорами в мире, что привело к сокращению продаж процессоров Intel x86. Это было связано с их огромным присутствием на рынке встраиваемых систем. Я думаю, что теперь процессоры на основе ARM могли бы взять на себя это название, но все еще существуют тонны встроенных систем, использующих MIPS.

Даже если вы никогда не программировали микросхему MIPS на ассемблере в своей карьере, язык ассемблера может быть полезен для изучения. Это может помочь вам написать более эффективный высокоуровневый код, если у вас есть представление о том, что будет генерировать компилятор. Другие области, где он все еще используется, включают компиляторы (написание ваших собственных), драйверы устройств и программирование мультимедиа (где код, требующий MMX или SSE, обычно все еще пишется вручную на ассемблере).

Каждый тип ЦП имеет свой набор команд, но достаточно общего, чтобы, как только вы выучите один диалект сборки (в вашем случае MIPS), остальные легко найти.

9 голосов
/ 19 сентября 2008

Полезно понимать очень низкие уровни компьютера. Например, есть разработчики, которые скажут, что процессор выполняет какую-то инструкцию «новый объект». Конечно, такой инструкции нет, управление объектами происходит на несколько уровней выше. Хорошо понимать разницу, поэтому вы можете понять, почему создание объекта может быть дорогим (или нет) или почему защищенные адресные пространства могут сделать систему более устойчивой.

Когда я учился в школе, курс ассемблера преподавался на мэйнфрейме IBM с использованием набора инструкций System / 360. Я никогда, ни разу в своей карьере, не сталкивался с работой на такой машине, но знание того, как выглядит процессор, было ценным.

В настоящее время я работаю на встроенных системах с использованием процессоров MIPS. На самом деле я провожу довольно много времени, просматривая списки сборок MIPS, и пишу некоторые сборки MIPS для векторов загрузки и примитивов синхронизации. Тем не менее, даже если вы никогда ничего не пишете на ассемблере, понимание работы процессора по-прежнему ценно.

8 голосов
/ 19 сентября 2008

Я брал урок по сборке около двух лет назад. Я обнаружил, что пишу игры GameBoy Advance на похожем на mips языке. Не могу сказать, что мне понравилось.

Хотя я думаю, что хорошо иметь представление о внутренней работе собранного кода (от высокого уровня до низкого уровня). Я чувствую, что это заставило меня понять больше о том, как на самом деле работает компьютер. Кроме того, вскоре я не удержался от создания нескольких виртуальных машин и разработки собственного языка ассемблера:)

4 голосов
/ 04 мая 2009

MIPS - отличный язык для изучения ассемблера. У вас есть много регистров общего назначения, которые делают написание ваших программ менее утомительным, и это архитектура RISC, поэтому вам нужно запомнить меньше инструкций.

Некоторое массовое использование, о котором упоминают не многие, заключается в том, что N64, Playstation 1, Playstation 2 и PSP используют процессоры MIPS.

4 голосов
/ 19 сентября 2008

Под "языком программирования mips" я предполагаю, что вы имеете в виду язык ассемблера MIPS.

Изучение языка ассемблера полезно знать, оно помогает сопоставить код, который вы пишете, с тем, как он будет работать на оборудовании. Это может помочь вам разобраться с более низкоуровневыми проблемами, такими как пропадание кэша, ветвление, неупорядоченное выполнение и другие вещи, о которых вы даже не думаете о написании высокоуровневого кода.

Погодное обучение Сборка MIPS будет вам полезна, зависит от того, какой карьерой вы планируете следовать. Лично я думаю, что x86 / x64 (популярный на ПК, непосредственно применим, если вы пишете C ++ или C # на ПК), PPC (набирающий популярность, используемый в игровых приставках, а также выставляющий вам RISC) или ARM (используемый во многих встроенных устройствах например, мобильные телефоны) - лучший выбор для изучения.

3 голосов
/ 19 сентября 2008

Язык ассемблера всегда стоит изучать. Возможно, вас не учат или не видят, как компилятор превращает код языка высокого уровня в код на ассемблере, но я бы сказал, что знание - это самое важное преимущество знания языка ассемблера. Отрезано, как неэффективно много компиляторов даже на самом высоком уровне оптимизации. (Большинство компиляторов выдают вам ассемблерный код по запросу, вместо того, чтобы переходить к машинному коду и ссылкам.)

Тем не менее, MIPS asm, вероятно, бесполезен, потому что сейчас почти никто не использует MIPS. (Раньше SGI, но теперь все их машины работают на чипах x86 / IA-64.) Если вам нравится ассемблер и вы хотите работать с ним дальше, изучите набор команд ARM. ARM только немного сложнее, чем MIPS, и практически все мобильные телефоны, смартфоны и КПК теперь используют чипы ARM (изготовленные десятками производителей). IPod использует ARM, как и (я думаю) Zune.

2 голосов
/ 09 января 2012

В вашем случае, я думаю, MIPS используется в качестве учебного пособия. Это урок информатики, и вместо того, чтобы давать вам инструменты обезьяны кода, они пытаются научить вас широким понятиям, которые легче иллюстрировать на более простой архитектуре, такой как MIPS, а не на x86.

Не ожидайте, что он войдет в ваш «инструментарий программиста». Для практической цели написания низкоуровневого кода лучше изучить язык ассемблера x86 впоследствии.

2 голосов
/ 19 сентября 2008

Mips, похоже, возвращаются во встроенных системах. @ [sk] дал лучшее резюме, чем я, но у меня есть недавний пример:

В наши дни Broadcom выпускает карты Wi-Fi с чипами MIPS или ARM (я не уверен, что в документации указано одно, а в прошивке - другое) Тем не менее, на более новых чипах мы все еще ожидаем работающей поддержки linux со всеми включенными функциями, поэтому я рад, что вы учитесь. (Теперь возьми и напиши мне несколько драйверов: P)

1 голос
/ 18 февраля 2015

Вот три веских причины для изучения ассемблера.

  1. Некоторые небольшие части программ лучше написаны на ассемблере, чем на языке высокого уровня.
  2. Возможно, необходимо отладить или усовершенствовать старые программы сборки.
  3. Обучение программированию на ассемблере поможет вам разработать точные модели того, что делает процессор и что делает компилятор.

Третья причина, безусловно, самая важная. Знание того, как работает ваше оборудование, значительно углубит ваше понимание информатики и, в свою очередь, поможет вам стать лучшим разработчиком.

1 голос
/ 21 октября 2013

Я изучал MIPS в прошлом году. MIPS - важный язык, но, к сожалению, и, вероятно, вы никогда не будете использовать MIPS. Вы изучите некоторые основы, но не тратите время на попытки узнать больше, чем нужно, потому что в MIPS не так много рабочих мест по сравнению с другими языками.

...