суббота, 28 февраля 2015 г.

MIPS Assembler on real hardware

Сегодня я попробовал примеры программ на языке ассемблера для ОС Linux для процессоров MIPS.
У меня есть устройство GCW0.
Я на нём проверил первые две программы из статьи.
Первый пример вообще без проблем смог собрать и запустить.
Со вторым была проблема со ссылками на заголовочные файлы.
Ссылки на заголовочные файлы для моего cross toolchain не заработали. Я поиском нашёл пути к заголовочным файлам с такими же именами в моём toolchain, и программа начала собираться. Вот какие пути у меня оказались для файлов:
#include "sys/regdef.h"
#include "asm/unistd.h"
Ниже пример выполнения второй программы на GCW0.

01.03.2015г. выполнил 3 и 4 программы-примеры на реальном оборудовании. Всё работает корректно. Есть замечание по программе 3, там в стеке выделяется 4 байта под временную переменную. К этой переменной должна идти адресация как 0(sp), а идёт адресация как 4(sp). Что не правильно, т.к. обращение идёт к тем данным, которые были выделеные в стеке до 4 байт под локальную переменную.
Небольшое резюме по примерам.
Первый пример показывает как без стартового и завершающего кода для языка Си писать программы для Linux на языке ассемблера. Начиная со второго примера при сборке используется стартоый и завершающий код Си, что подтверждается точкой входа main. В четвёртом примере вызывается функция стандартной библиотеки Си printf.

воскресенье, 22 февраля 2015 г.

MIPS-based devices

На веб-сайте linux-mips есть БД устройств на базе процессоров MIPS.
Описание сетевых чипов и устройств на из базе (используют MIPS CPU) присутствует на веб-сайте wikidevi.

GL.iNet

Есть такое популярное устройство, используемое для DIY - TP-Link WR703 (MR3020). Базовый элемент - SoC AR9331. Сейчас используется плата разработки IoT.
Так вот недавно я обнаружил устройство, которое выполняет такие же функции как устройства TP-Link, но изначально предполагают своё использвание в DIY: есть сразу UART, выведены GPIO, прошивка OpenWRT с доработанным U-boot. Это GL.iNet. Информация на веб-сайте OpenWRT об этом устройстве. Есть один минус для меня - это не предоставлена схемотехника устройства, не понятно, где на плате находится JTAG и выведен ли он вообще.

суббота, 21 февраля 2015 г.

MARS better than QtSpim

Изучил Интернет на наличие обучающих материалов по MIPS Assembly Language. Оказалось очень много материалов, книг и лекций. Получается так, что архитектура MIPS очень популярна при изучении архитектуры компьютера и программированию на языке ассемблера. 
Реальное оборудование в этих курсах практически не используется. Вместо него используются программы-симуляторы вычислительных систем на базе процессоров MIPS.
В большинстве книг и курсов до 2005 года описывается использование SPIM. С 2010 года существует QtSpim, версия с ГИП, которая имеет возможность запуска на трёх ведущих десктопных ОС. 
Но с 2005 года ведётся разработка ещё одного симулятора под названием MARS. Эта программа в современных курсах уже упоминается как программа, имеющая преимущества перед SPIM (QtSpim).
Я занимаюсь изучением MIPS Assembler Language и попробовал обе эти программы. Я считаю, что QtSpim очень неудобен, MARS более удобен.
Вот то, что для меня в MARS удобнее:
1) наличие встроенного редактора исходного текста с подсветкой синтаксиса;
2) удобное расположение компонентов главного экрана: большую часть экрана в режиме симулятора занимает представление сегмента text, под ним удобно расположено представление сегмента data, регистры с правой стороны, также в главном окне помещается область ввода/вывода.

QtSpim выглядит недоработанным. Я имею опыт работы с Qt. Если появится свободное время, попробую помочь этому проекту.

На данный момент однозначно MARS!

четверг, 12 февраля 2015 г.

MIPS Assembley Language

Начал изучать язык ассемблера для архитектуры MIPS по книге MIPS Assembly Language Programming. В книге есть достаточное кол-во упражнений для закрепления материала.

There is a discussion about MIPS for education computer architecture - https://news.ycombinator.com/item?id=7614362.

понедельник, 2 февраля 2015 г.

Information recources

В данной заметке будут располагаться ссылки на статьи, книги и др. информационные ресурсы.

Simulators and assemblers:
1) QtSpim
2) MARS

Lectures and exercises:
1) Computer Architecture and Assembly Language - MIPS Assembly language, MARS recommended, good explanation of data representation.
2) Review of system call in MIPS Linux.

MIPS-based devices:
1) Обзор устройств под управлением ОС OpenWRT;

Other:
1) Very good information resource (not only Linux port to MIPS) - linux-mips.

Targets of this blog

Информация в блоге будет представлена на русском языке.
В последнее время заинтересовался устройствами на базе процессоров с архитектурой MIPS. Она мне кажется перспективной. Целей этого блога несколько.
1. Упорядочивать накапливаемую мной информацию в этом направлении.
2. Делиться найденными мной материалами.
3. Описывать различные устройства, которые построены на базе процессоров с архитектурой MIPS.

Для тех, кто читает и будет читать блог. Комментарии и замечания очень приветствуются, т.к. я являюсь новичком в этом направлении. Мои мысли могут не являться правильными.