Подтвердить что ты не робот

MIPS - Это важно?

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

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

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

4b9b3361

Ответ 1

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

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

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

Ответ 2

Я взял класс сборки, делающий mips около двух лет назад. Я обнаружил, что писал игры GameBoy Advance на языке mms-like asm. Не могу сказать, что мне понравилось.

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

Ответ 3

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

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

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

Ответ 4

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

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

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

Ответ 5

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

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

Ответ 6

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

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

Ответ 7

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

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

Ответ 8

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

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

Ответ 9

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

Ответ 10

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

Ответ 11

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

  • Некоторые небольшие фрагменты программ лучше записываются в сборке, чем на языке высокого уровня.
  • Старые программы сборки могут потребоваться отладки или расширения.
  • Обучение программированию в сборке поможет вам разработать точные модели того, что делает процессор и что делает компилятор.

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