Чтобы приступить к работе необходимо выбрать в меню нужный пункт: • Папка MultiCletSDK • Проекты MultiCletSDK • Создать проект • Удалить SDK • Редактор PSPad (запуск редактора PSPad).


Чтобы посмотреть этот PDF файл с форматированием и разметкой, скачайте его и откройте на своем компьютере.




РУКОВОДСТВО ПО
ЛЬЗОВАТЕЛЯ

ПО ПРОГРАММНОМУ ОБЕС
ПЕЧЕНИЮ





© ОАО «Мультиклет
» 2012
v
.0.1.
2
-
154



СОДЕРЖАНИЕ

1.

РУКОВОДСТВО ПОЛЬЗОВАТЕЛЯ ПО УСТАНОВКЕ И УДАЛЕНИЮ ПО

.....................

7

1.1.

Установка программного обеспечения и документации.

................................
........

7

1.2.

Удаление программного обеспечения и документации

................................
........

10

2.

РУКОВОДСТВО ПОЛЬЗОВАТЕЛЯ ПО СРЕДЕ РАЗРАБОТКИ

................................
........

13

2.1.

Описание оболочки

................................
................................
................................
..

13

2.2.

Создание проектов

................................
................................
................................
....

14

2.3.

Компиляция проектов

................................
................................
...............................

15

2.4.

Загрузка программы в ПЗУ

................................
................................
......................

15

2.5.

Запуск программ на модели

................................
................................
.....................

15

2.6.

Документация

................................
................................
................................
............

15

3.

РУКОВОДСТВО ПОЛЬЗОВАТЕЛЯ ПО КОМПИЛЯТОРУ СИ

................................
.........

16

3.1.

Описание

................................
................................
................................
...................

16

3.2.

Подготовка к работе
................................
................................
................................
..

16

3.3.

Пакет MultiCletSDK

................................
................................
................................
..

17

3.4.

Трансляция и сборка при помощи драйвера

................................
..........................

17

3.5.

П
ередача аргументов редактору связей

................................
................................
..

17

3.6.

Некоторые другие полезные ключи драйвера компиляции

................................
..

18

3.7.

Диагностические сообщения

................................
................................
...................

18

3.8.

Особенности ранней версии компилятора.

................................
............................

19

3.9.

Сбо
рка программы

................................
................................
................................
....

19

4.

РУКОВОДСТВО ПОЛЬЗОВАТЕЛЯ ПО АССЕМБЛЕРУ

................................
....................

23

4.1.

Общие сведения о мультиклеточном процессоре

................................
..................

23

4.1.1. Память программ (ПП)

................................
................................
.......................

23

4.1.2. Память данных (П
Д)

................................
................................
...........................

25

4.1.3. Регистры

................................
................................
................................
...............

25

4.1.3.1. Регистры общего назначения

................................
................................
.

25

4.1.3.2. Регистры индексные

................................
................................
...............

26

4.1.3.3. Регистры управля
ющие

................................
................................
..........

26

4.1.3.4. Регистр PSW управления вычислительным процессом

......................

27

4.1.3.5. Регистр INTR прерываний

................................
................................
.....

29




© ОАО «Мультиклет
» 2012
v
.0.1.
3
-
154


4.1.3.6. Регистр MSKR маски прерываний

................................
........................

30

4.1.3.7. Регист
р ER ошибок

................................
................................
.................

31

4.1.3.8. Регистр IRETADDR адреса возврата

................................
....................

32

4.1.3.9. Регистр STVALR периода системного таймера

................................
...

32

4.1.3.10. Регистр STCR управления системным таймером

..............................

33

4
.1.3.11. Регистр IHOOKADDR первичного обработчика прерываний

..........

34

4.1.3.12. Регистр INTNUMR номера прерывания

................................
.............

34

4.1.3.13. Регистр MODR маски модификации индексных регистров

.............

35

4.1.4. Коммутатор

................................
................................
................................
..........

36

4.1.5. Выборка команды

................................
................................
................................

37

4.2.

Общие сведения об ассемблер
е

................................
................................
...............

37

4.2.1. Запуск ассемблера и опции командной строки
................................
.................

38

4.3.

Основные понятия языка

................................
................................
.........................

38

4.3.1. Комментарии

................................
................................
................................
........

38

4.3.2. Константы

................................
................................
................................
............

38

4.3.2.1. Числовые константы

................................
................................
...............

38

4.3.2.2. Символьные (литеральные) константы

................................
.................

39

4.3.3. Се
кции

................................
................................
................................
..................

40

4.3.3.1. Подсекции

................................
................................
................................

42

4.3.4. Символы

................................
................................
................................
...............

42

4.3.4.1. Система имён символов

................................
................................
.........

42

4.3.4.2. Метки

................................
................................
................................
.......

42

4.3.4.3. Символы с абсолютным значением

................................
.......................

43

4.3.4.4. Атрибуты символов

................................
................................
................

43

4.3.5. Выражения

................................
................................
................................
...........

43

4.3.5.1. Пустые выражения

................................
................................
..................

44

4.3.5.2. Целочисленные выражения

................................
................................
....

44

4.3.5.3. Аргументы

................................
................................
...............................

44

4.3.5.4. Операторы

................................
................................
................................

44

4.4.

Система команд ассемблера

................................
................................
.....................

46

4.4.1. Условные обозначения

................................
................................
........................

46

4.4.2. Типы операций

................................
................................
................................
.....

47

4.4.3. Общий принцип построения команд в ассемблере

................................
..........

48




© ОАО «Мультиклет
» 2012
v
.0.1.
4
-
154


4.4.3.1. Общие правила формирования аргументов команд и их интерпретация

48

4.4.3.2. Правила формирования результатов команд

................................
........

49

4.4.4. Описание команд

................................
................................
................................
.

50

4.4.4.1. abs (ABSolute value)

................................
................................
................

50

4.4.4.2. adc (ADdition
with Carry)

................................
................................
........

52

4.4.4.3. add (ADDition)

................................
................................
.........................

55

4.4.4.4. and (AND)

................................
................................
................................

57

4.4.4.5. cfsl (Convert Float to Signed Long)

................................
.........................

58

4.4.4.6.
clf (Convert Long to Float)

................................
................................
.......

60

4.4.4.7. cslf (Convert Signed Long to Float)

................................
.........................

62

4.4.4.8. div (DIVide)

................................
................................
..............................

64

4.4.4.9. exa (EXacutive Address)

................................
................................
...........

67

lue)

................................
................................
.......................

74

4.4.4.11. insub (INversion SUBtract)

................................
................................
....

77

4.4.4.12. ja (Jump if Above)

................................
................................
..................

80

4.4.4.13. jae (Jump if Above and Equal) / jnc (Jump if Carry flag unset)

.............

81

4.4.4.14. jb (Jump if Below) / jc (Jump if Carry flag set)

................................
......

82

4.4.4.15. jbe (Jump if Below and Equal)

................................
...............................

83

4.4.4.16. je (Jump if Equal)

................................
................................
....................

84

4.4.4.17. jg (Jump if Greater)

................................
................................
.................

85

4.4.4.18. jge (Jump if
Greater and Equal)

................................
..............................

86

4.4.4.19. jl (Jump if Less)

................................
................................
......................

87

4.4.4.20. jle (Jump if Less and Equal)

................................
................................
...

88

4.4.4.21. jmp (unconditional JuMP)

................................
................................
......

89

4.4.4.22. jne (Jump

if Not Equal)

................................
................................
...........

90

4.4.4.23. jno (Jump if Overflow flag unset)

................................
...........................

91

4.4.4.24. jns (Jump if Sign flag unset)

................................
................................
...

92


................................
................................
.

93

4.4.4.26. js
(Jump if Sign flag set)

................................
................................
.........

94

4.4.4.27. madd (Multiplication with ADDition of packed arguments)

..................

95

4.4.4.28. max (MAXimum)

................................
................................
...................

96

4.4.4.29. min (MINimum)

................................
................................
......................

97

4.4.4.30. mul (MULtiply)

................................
................................
......................

98




© ОАО «Мультиклет
» 2012
v
.0.1.
5
-
154


4.4.4.31. norm (NORmalization)

................................
................................
.........

101

4.4.4.32. not (NOT)

................................
................................
..............................

102

4.4.4.33. or (OR)

................................
................................
................................
..

103

4.4.4.34.

pack (PACK)

................................
................................
.........................

104

4.4.4.35. patch (PATCH)

................................
................................
......................

105

4.4.4.36. rd (ReaD)

................................
................................
..............................

106

4.4.4.37. rol (ROtate Left)

................................
................................
...................

110

4.4.4.38. ror (ROtate Rig
ht)

................................
................................
.................

111


................................
................................
..

112

4.4.4.40. sbb (SuBtract with Barrow (Carry Flag))

................................
.............

113


................................
................................
...............................

114

4.4.4.42. sll (Shift Logical Left
) / sal (Shift Arithmetic Left)

..............................

120

4.4.4.43. slr (Shift Logical Right)

................................
................................
........

121

4.4.4.44. sqrt (SQuare RooT)

................................
................................
...............

122

4.4.4.45. sub (SUBtract)

................................
................................
......................

123

4.4.4.46. wr (WRite)

................................
................................
............................

126

4.4.4.47.

xor (XOR)

................................
................................
.............................

12
9

4.5.

Система директив ассемблера

................................
................................
...............

130

4.5.1. .alias name value

................................
................................
................................
.

130

4.5.2. .align abs_expr, abs
_expr, abs_expr

................................
................................
....

130

4.5.3.

.ascii “string” . . .

................................
................................
................................
.

131

4.5.4. .asciiz “string” . . .

................................
................................
...............................

131

4.5.5.

.bss subsection

................................
................................
................................
.....

132

4.5.6. .byte expressions

................................
................................
................................
.

132

4.5.7. .comm symbol, length, align

................................
................................
...............

132

4.5.8. .data subsection

................................
................................
................................
...

133

4.5.9. .else

................................
................................
................................
......................

133

4.5.10.

.elseif

................................
................................
................................
.................

133

4.5.11. .end

................................
................................
................................
....................

133

4.5.12.

.endif

................................
................................
................................
..................

133

4.5.13. .equ symbol, expression

................................
................................
....................

134

4.5.14. .equiv symbol, expression

................................
................................
.................

134

4.5.15.

.eqv symbol, expression

................................
................................
....................

134




© ОАО «Мультиклет
» 2012
v
.0.1.
6
-
154


4.5.16. .err

................................
................................
................................
......................

134

4.5.17.

.error “string”

................................
................................
................................
.....

134

4.5.18.

.fill repeat, size, v
alue

................................
................................
........................

135

4.5.19.

.float flonums

................................
................................
................................
.....

135

4.5.20.

.global names, .globl names

................................
................................
..............

135

4.5.21.

.if absolute_expression

................................
................................
......................

136

4.5.22. .include “fil
e”

................................
................................
................................
....

137

4.5.23.

.lcomm symbol, length

................................
................................
......................

138

4.5.24. .local names

................................
................................
................................
.......

138

4.5.25. .long expressions

................................
................................
...............................

138

4.5.26. .p2align abs_expr,
abs_expr, abs_expr

................................
..............................

138

4.5.27.

.print string

................................
................................
................................
........

139

4.5.28. .quad expressions

................................
................................
...............................

140

4.5.29. .rept count

................................
................................
................................
..........

140

4.5.30. .set symbol, expression

................................
................................
......................

140

4.5.31.

.short expressions

................................
................................
..............................

140

4.5.32.

.single flonums

................................
................................
................................
..

141

4.5.33. .size name, expression

................................
................................
.......................

141

4.5.34.

.skip size, fil
l

................................
................................
................................
.....

141

4.5.35.

.space size, fill

................................
................................
................................
...

142

4.5.36. .string “str”

................................
................................
................................
........

142

4.5.37.

.text subsection

................................
................................
................................
..

143

4.5.38. .type name, type

................................
................................
................................
.

144

4.5.39.

.warning “string”

................................
................................
...............................

144

4.5.40. .weak names

................................
................................
................................
......

144

4.6.

Принципы программирования на ассемблере для мультиклеточного процессора
145

4.7.

Прерывания и их обработка

................................
................................
...................

149

5.

РУКОВОДСТВО ПОЛЬЗОВАТЕЛЯ ПО РЕДАКТОРУ СВЯЗЕЙ

................................
.....

152

5.1.

Общие сведения о редакторе связей

................................
................................
.....

152

5.2.

Использование редактора связей

................................
................................
...........

152

6.

РУКОВОДСТВО П
ОЛЬЗОВАТЕЛЯ ПО ЗАГРУЗЧИКУ

................................
...................

154

6.1.

Общие сведения о загрузчике

................................
................................
................

154

6.2.

Использование загрузчика

................................
................................
.....................

154




© ОАО «Мультиклет
» 2012
v
.0.1.
7
-
154



1.

РУКОВОДСТВО ПОЛЬЗОВАТЕЛЯ ПО УСТАНОВКЕ И УДАЛЕНИЮ
ПО



1.1.

Установка программного обеспечения и документации.


Установка программного обеспечения и документации (далее MultiCletSDK)
осуществляется специально созданным инсталлятором.

Для начала установки нужн
о запустить файл MultiCletSDK.exe.

После запуска установки отображается окно приветствия с краткой информацией об
устанавливаемом продукте.




Для продолжения установки необходимо нажать кнопку «Далее».

На втором шаге отображается окно со списком доступны
х для установки компонентов, в
котором можно выбрать параметр «Ярлык на рабочий стол». По умолчанию он выключен. Его
включение приведёт к тому, что после установки на рабочем столе появится ярлык,
указывающий на главную папку с документацией, тестами и про
ектами MultiCletSDK.






© ОАО «Мультиклет
» 2012
v
.0.1.
8
-
154




Затем нужно нажать кнопку «Далее».

На третьем шаге можно выбрать каталог, куда будут установлены файлы
M



Затем нужно нажать кнопку «Установить».

В процессе установки будет отображаться ход копирования файлов.




© ОАО «Мультиклет
» 2012
v
.0.1.
9
-
154




По
завершении нужно нажать кнопку «Закрыть». На этом установка считается завершённой.




В результате завершения программы установки в меню «Пуск» будет добавлена группа

ярлыков MultiCletSDK.





© ОАО «Мультиклет
» 2012
v
.0.1.
10
-
154





Чтобы приступить к работе необходимо выбрать в меню нужный пу
нкт:




Папка MultiCletSDK;



Проекты MultiCletSDK;



Создать проект;



Удалить SDK;



Редактор PSPad (запуск редактора PSPad).



1.2.

Удаление программного обеспечения и документации

Удаление программного обеспечения и документации (далее MultiCletSDK)
осуществляется спе
циально созданным деинсталлятором.

Для запуска процесса удаления нужно запустить файл uninstall.exe, который расположен

в установочной директории MultiCletSDK, либо выбрать в меню «Пуск» пункт

«MultiCletSDK
\
Удалить MultiCletSDK».

После запуска процесса уда
ления отображается окно приветствия с краткой
информацией

об удаляемом продукте.





© ОАО «Мультиклет
» 2012
v
.0.1.
11
-
154




Для продолжения установки необходимо нажать кнопку «Далее».

На втором шаге отображается окно подтверждения удаления MultiCletSDK.





Для подтверждения удаления MultiClet
SDK нужно нажать кнопку «Удалить».

В процессе удаления будет отображаться ход удаления файлов.







© ОАО «Мультиклет
» 2012
v
.0.1.
12
-
154




По завершении нужно нажать кнопку «Закрыть». На этом процесс удаления продукта

считается завершённым.





© ОАО «Мультиклет
» 2012
v
.0.1.
13
-
154



2.

РУКОВОДСТВО ПОЛЬЗОВАТЕЛЯ ПО СРЕДЕ РАЗРАБОТКИ


2.1.

Описа
ние оболочки

Оболочка основана на базе свободно распространяемого редактора PSPad
(http://www.pspad.com) со специальными настройками для работы с проектами MultiClet.

Редактор обладает следующими характеристиками:



работа с проектами;



работа над несколькими

документами одновременно (MDI);



сохранение экранной сессии, т. е. при следующем входе PSPad автоматически откроет
все



открытые на момент закрытия файлы;



FTP клиент


вы можете редактировать файлы прямо с web
-
сервера;



поддержка макросов: записывать, сохран
ять и загружать макросы;



поиск и замена в файлах;



сравнение текстов с разноцветной подсветкой различий;



шаблоны (HTML
-
теги, скрипты, шаблоны кода...);



инсталляция содержит шаблоны для HTML, PHP, Pascal, JScript, VBScript, MySQL,
MSDos, Perl,...;



подсветка
синтаксиса применяется автоматически согласно тип
у

файла;



определяемые пользователем стили подсветки для экзотических синтаксисов;



автокоррекция;



интеллектуальный встроенный HTML
-
предпросмотр используя IE и Mozilla;



полноценный HEX редактор;



вызов внешних
программ, отдельно для каждой среды разработки;



внешний компилятор с перехватом вывода, окном лога и парсер логов для каждой
среды



создают эффект "IDE";



цветная подсветка синтаксиса для печати и допечатный предпросмотр;



интегрирована TiDy
-
библиотека для фо
рматирования и проверки HTML
-
кода,
конверсии



в CSS, XML, XHTML;



встроенная свободная версия CSS
-
редактора TopStyle Lite;




© ОАО «Мультиклет
» 2012
v
.0.1.
14
-
154




экспорт кода с подсветкой в форматах RTF, HTML, TeX в файл или буфер обмена;



вертикальное выделение, закладки, метки, нумерация строк .
..;



переформатирование и сжатие HTML
-
кода, изменения регистра слов, тэгов, букв;



сортировка строк с возможностью сортировать по заданному столбцу, с параметром
удаления дубликатов;



таблица ASCII
-
символов с приведением соответствия HTML
-
мнемоник;



навигатор
кода для Pascal, INI, HTML, XML, PHP, и многих других в будущем;



проверка правописания;



встроенный веб
-
браузер с поддержкой APACHE;



подсветка парных скобок.


Более подробно о
бо

всех возможностях редактора и

о том,
как им пользоваться можно
узнать из

встрое
нной справк
е

редактора, т. к. описать их все в рамках
данного документа не

п
редставля
ется возможным.

Далее будут описаны лишь те особенности, которые присущи проектам MultiClet.

В процессе инсталляции за редактором закрепляются следующие расширения:

*.ppr
-

файл проекта;

*
.asm
-

файл ассемблера MultiClet.

Расширения *.c, *.h не регистрируются, чтобы не перекрыть настройки с
истемы по
умол
чанию, т. к. высока вероятность того, что в системе уже установлен редактор этих файлов.


2.2.

Создание проектов

Создать новый п
роект можно двумя путями:

• через запуск скрипта создания нового проекта;

• средствами самого редактора (см. справку редактора).

В главном меню и в папке Multiclet есть ссылка на скрипт создания проекта: «Создать

проект»
.

При запуске скрипта создаётся папк
а нового проекта в папке с проектами, которая по

умолчанию находится в папке "C:/Multiclet/Projects". В проект включён один файл
-
шаблон.

Дальнейшее добавление файлов в проект производится при помощи средств самого редактора.
Так же можно создать проект и в

самом редакторе. Процедура создания нового проекта

подробно описана во встроенной справке.





© ОАО «Мультиклет
» 2012
v
.0.1.
15
-
154



2.3.

Компиляция проектов

Редактор настроен на компиляцию проектов Си и ассемблера MultiClet.


Для запуска компиляции должен быть открыт соответствующий проект.


Для зап
уска компиляции необходимо нажать Ctrl+F9, что приведёт к компиляции всех

файлов Си и ассемблера, расположенных в директории и всех поддиректориях проекта.

Ход
компиляции (журнал) отображается в нижней части окна редактора.

По завершении компиляции
в журна
ле отображается результат компиляции.

Если компиляция завершилась успешно, то код
завершения равен 0, иначе отображается

код ошибки.


2.4.

Загрузка программы в ПЗУ

Для загрузки программы в ПЗУ необходимо нажать Alt+F9, что приведет к запуску окна
загрузки програ
ммы в память. Процесс загрузки и очистки памяти пройдет автоматически. В
качестве альтернативы данному сочетанию клавиш можно использовать соответствующие
кнопки на панели управления PSPad.



2.5.

Запуск программ на модели

После компиляции полученный файл образа

памяти можно запустить на модели.

Для
запуска модели нужно нажать F9.

В процессе выполнения модели могут появляться
диагностические сообщения и другие

подсказки.



2.6.

Документация

Документация на SDK MultiClet находит
ся в папке "C:/MultiClet/Docs":

Manual
_
Sof
t
.pdf


Руководство пользователя по
программному обеспечени
ю
.


Ограничения

В данной версии не поддерживается отладка программ.

После завершения компиляции
в
се действия по загрузке программы в процессор или

запуск модели нужно осуществлять
вручную.







© ОАО «Мультиклет
» 2012
v
.0.1.
16
-
154



3.

РУКО
ВОДСТВО ПОЛЬЗОВАТЕЛЯ ПО КОМПИЛЯТОРУ С
И


Компилятор для процессора MCp создан на основе LCC (перенацеливаемый компилятор
для ANSI C
--

стандарт C89). Используемый в проекте LCC 4.2 обеспечивает фасад
компилятора: препроцессор, лексический анализатор, синтак
сический анализатор, некоторую
оптимизацию промежуточного кода (например, распространение констант), некоторые
библиотеки. Компанией «Мультиклет» разработаны генератор ассемблерного кода из
промежуточного представления LCC 4 и управляющий процессом компил
яции драйвер,
который позволяет получить образ памяти для загрузки на отладочную плату или в модель
процессора.


3.1.

Описание



В настоящее время генератор выдаёт код, соответствующий архитектуре и системе
команд MCp0411100101. Поэтому, операции целочисленного

деления и взятия остатка от
деления реализованы через вызов функций, написанных на ассемблере. Они содержатся в файле
crt0.s системной библиотеки.

В состав компилятора входят три программы:



драйвер (lcc в Linux / lcc.exe в Windows);



препроцессор (cpp /

cpp.exe);



транслятор (rcc / rcc.exe).

Драйвер использует так же исполняемые файлы:



ассемблера (as / as.exe);



редактора связей (ld / ld.exe);



средства подготовки образа (convert / convert.exe).

Эти программы входят в предоставляемые компанией «Мульти
клет» пакеты ассемблера
(as) и редактора связей (ld, convert), а так же в интегрированную среду разработки.


3.2.

Подготовка к работе


Для того, чтобы драйвер компилятора мог обеспечить полную сборку программы до
пригодного к загрузке и исполнению образа памяти
, необходимо в одной директории разместить
исполняемые файлы:



lcc




© ОАО «Мультиклет
» 2012
v
.0.1.
17
-
154




cpp



rcc



as



ld

В системах, с поддержкой ссылок на файлы вместо копий самих файлов в этой директории
можно разместить ссылки на них.


3.3.

Пакет MultiCletSDK


Пакет MultiCletSDK содержит все н
еобходимые программы и файлы с ассемблером,
подготовленные к работе.


3.4.

Трансляция и сборка при помощи драйвера


Текущая версия компилятора требует указания в командной строки опции
-
lccdir =
LCCDIR
, где LCCDIR
-

директория с исполняемым
и файлами: lcc, cpp,
rcc, as, l
d
.

Поэтому, трансляция набора исходных файлов С89 в набор объектных файлов осуществляется
командой:



lcc
-
lccdir=LCCDIR
-
c f1.c ... fN.c

Сборка готового к исполнению образа памяти может быть осуществлена командой:



lcc
-
lccdir=LCCDIR f1.c ... f
N.c asm1.s ... asmM.s o1.o ...



oL.o CRTDIR/crt0.0

-
o image

где CRTDIR
-

директория, содержащая crt0.
0
. В этой команде проиллюстрировано то, что
драйвер способен собрать образ программы из:



исходных текстов на С89;



исходных текстов на ассемблере MCp;



з
аранее подготовленных объектных файлов.

Если опция
-
o, задающая имя собираемого образа, не будет использована в командной строке, то
этот образ получит имя a.out в текущей директории.


3.5.

Передача аргументов редактору связей


Иногда полезно передать некоторы
е аргументы командной строки редактору связей.
Например, ключ
-
M, на который редактор откликается выдачей информации о размещении



© ОАО «Мультиклет
» 2012
v
.0.1.
18
-
154


символов, что полезно для отладки и анализа памяти после запуска программ на отладочной
памяти или на программной модели проце
ссора.

Опции редактору связей могут быть переданы при помощи ключа
-
Wm так, как это
делается в следующем примере (в одной из Linux
-
систем разработчиков;
\

указывает перенос
команды на следующую строку):


$ cd /tmp/flc/MC/bld


$ lcc
\




-
lccdir=./
\




-
Wm
-
M
\




../lcc/multiclet/symbolic/tst/factorial.c
\




..
INST_DIR&#x-5I1;NST;&#x_D-8;&#xI13R;&#x-200;
/
SDK
/
lib
/
MCp
0411100101/
crt
0.
0

\




-
o
fact.img


INST
_
DIR

-

установочная директория


3.6.

Некоторые другие пол
езные ключи драйвера компиляции

-
S

драйвер обеспечит только лишь трансляцию исходны
х

файлов на Си в ассемблер
процессора MCp. Другие стадии

п
остроения исполняемого пройдены не будут.


3.7.


Диагностические сообщения

Так как фасад компилятора построен на базе LCC, то и диагностические

сообщения,
связанные с лексической, синтаксической и семанти
ческой

корректностью исходной программы
являются стандартными для этой

системы. Они достаточно подробны и информативны.
Детальнее с ними

можно познакомиться в инструкциях на сайте

http://www.cs.virgi
nia.edu/~lcc
-
win32/
.

Кодогенератор компилятора может так же выдавать диагностические

сообщения,
связанные с текущими особенностями его реализации. Для

текущей версии список сообщений
таков:


1.
координаты

в

исходных

текстах
�: expression is too complex;

p
lease, consider to
decompose it
--

это

сообщение

выдаётся

в

с
лучае, если выражение стоящее в указанной позиции



© ОАО «Мультиклет
» 2012
v
.0.1.
19
-
154


в исходных

текстах (файл, строка) компилятору не удалось уложить в

ограничения,
накладываемые на структуру параграфа.


В будущих версиях проблема

будет решена.


3.8.

Особенности ранней версии компилятора.

Текущая версия компилятора не поддерживает операции присваивания блоков

данных.
То есть, следующие конструкции:


1. Инициализация константами автоматических массивов и структур.


2. Присваивание одной с
труктуры другой, то есть, конструкции

вида
:



struct S s1, s2;



...



s1 = s2;


3. Вызовы функций, возвращающих структуры, или принимающие их в

качестве
аргументов (именно структуры, на указатели никаких


ограничений не накладывается).


В будущих версиях
компилятора (выходящих после 22.07.2012)

проблема будет решена.


3.9.

Сборка программы


Рассмотрим пример программы, написанной на языке Си, реализующ
ей

алгоритм сортировки
методом пузырька.


#define SIZE 256

int array[SIZE];


void main(void)

{


int i;


int j;


int c = 0;





© ОАО «Мультиклет
» 2012
v
.0.1.
20
-
154



for(i = 0; i SIZE; i += 1)


{



c = 255
-

i;



array[i] = c;


}


for(j = SIZE
-
1; j; j
-
= 1)

{

for(i = 0; i j; i += 1)

{

if(array[i]� array[i + 1])

{

int tmp = array[i];

array[i] = array[i + 1];

array
[
i

+ 1] =
tmp
;

}

}

}

}


Предположим, что данная программа сохранена в файле с именем bubble.c.

Процесс
сборки программы, или, другими словами, получение файла, содержащего образы памяти
программ и памяти данных

исполняемой программы, необходимого для загрузки в ПЗУ
отладочной пла
ты или выполнения на модели, состоит из следующих

этапов:

1.

О
бработка файла bubble.c препроцессором Си, для чег
о необходимо в командной строке

выполнить следующую команду:


cpp bubble.c bubble.i

Препроцессор выполняет удаление из исходного кода коммент
ариев, а также осуществляет
обработку препроцессорных

директив, начинающихся с символа

«
#
»
, таких как
#define,
#include и других.



2.
К
омпиляция файла bubble.i компилятором Си, для чего необходимо в командной строке
выполнить следующую команду:




© ОАО «Мультиклет
» 2012
v
.0.1.
21
-
154



rcc

bubble.i bubble.s

Компилятор Си выполняет трансляцию программы на языке Си в эквивалентную
программу на языке ассемблера.



3.
К
омпиляция файла bubble.s компилятором ассемблерного кода, для чего необходимо в
командной строке выполнить следующую команду:


as
-
obubble.o bubble.s

Ассемблирование исходного кода программы на языке ассемблера в объектный файл,
содержащего блоки машинного кода

и данных программы, с неопределенными адресами
символов на данные и процедуры в других объектных файлах, а также

с
писок своих
процедур и данных.

Опция компилятора ассемблерного кода
«
-
o
»

задаёт имя выходного объектного файла.


4.
С
борка файла, содержащего образы памяти программ и памяти данных исполняемой
программы из одного или нескольких объектных файлов,

для чего необходимо в командной
строке выполнить следующую команду:


ld
-
M
-
oimage.bin crt0.o bubble.o

Опция компоновщика
«
-
M
»

указывает на необходимость вывода в стандартный поток
вывода информации о размещении

данных объектных файлов в пам
я
ти и зн
ачениях,
назначенных символам.

Опция компоновщика
«
-
o
»

задаёт имя выходного файла, содержащего образы памяти
программ и памяти данных исполняемой программы.

Объектный файл crt0.o предоставляет набор стартовых исполняемых процедур, которые
выполняют необходимую

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

передаваемых на вход
компоновщику.

Для программ, исходный код которых написан только на языке ассемблера,
файл

crt0.o может не использоваться.


Процесс сборки программы может быть выполнен драйвером сборки lcc, для чего
необходимо в командной

строке выполнить следующую команду:


lcc
-
tar
get=mcp/win32
-
Wl
-
M
-
oimage.bin crt0.o bubble.s

В этом случае драйвер выполнит описанную выше последовательность действий
самостоятельно.




© ОАО «Мультиклет
» 2012
v
.0.1.
22
-
154



Полученный файл образов памяти исполняемой программы (image.bin) может быть:



загружен в ПЗУ отладочной платы, для

чего необходимо в командной строке выполнить
следующую команду:


ploader image.bin



выполнен на функциональной модел
и
, для чего необходимо в командной строке
выполнить, например, следующую команду:

model
\


-
dump
-
raw
\


-
dump
-
addr
\


-
dump
-
long
\


-
dump
-
length 4
\


-
dump
-
from 0x00000088
\


-
dump
-
to 0x00000488
\


image.bin

Опции
«
-
dump
-
from
»

и
«
-
dump
-
to
»

задают начальный и конечный адреса блока памяти
данных, содержимое которого

необходимо вывести на печать. Начиная с адреса 0x00000088
памяти
данных, компоновщиком был размещён массив
array, элементы которого в результате
выполнения программы будут упорядочены по возрастанию.

Описание всех опций запуска функциональной модели можно узнать выполнив в
командной строке команду:

model.exe
--
help




© ОАО «Мультиклет
» 2012
v
.0.1.
23
-
154



4.

РУКОВОДСТВО ПОЛЬЗОВАТЕЛЯ ПО АССЕМБЛЕРУ


4.1.

Общие сведения о мультиклеточном процессоре

Мультиклеточное процессорное ядро


первое процессорное ядро с принципиально
новой

мультикле
точной архитектурой российской разработки. Мультиклеточный

процессор
предназначен для решения широкого круга задач управления и цифровой обработки

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

Мультиклеточны
й процессор состоит из 4 клеток (когерентных процессорных блоков),

объединенных интеллектуальной коммутационной средой, и с раздельной памятью программ и

данных.

Система команд ядра мультиклеточного процессора имеет два формата (
ܣ
ܣ

-

размер
ностью слово (
32 бита) и
ܣ




размерностью двойного слова (64 бита)).

Команды ядра работают со следующими типами данных:



знаковый/беззнаковый байт, размерностью 8 бит;



знаковое/беззнаковое слово, размерностью 32 бита;



беззнаковое двойное слово, размерностью 64 бита;



з
наковый вещественный, размерностью 32 бита;



знаковый вещественный упакованный, размерностью 64 бита;



знаковый вещественный комплексный, размерностью 64 бита.

Следует заметить, что не каждая команда ядра поддерживает все перечисленные типы

данных.

Мультикле
точное ядро аппаратно обеспечивает реализацию параллелизма на
операторном уровне «естественным» образом, без решения задачи распараллеливания.


4.1.1.

Память программ (ПП)

Память программ представляет собой независимые бл
оки статических оперативно
-
запо
минающих уст
ройств (ПП0


ПП3), число которых равняется

числу процессорных блоков
(кле
ток). Соответственно, каждый процессорный блок имеет свою собственную память
программ.

Указанные блоки памяти не связаны между собой и функционируют независимо.

Для пользователя памя
ть программ работает только в режиме чтения и используется

только для хранения программного алгоритма. Для констант используется выделенная для

этого
область в
памяти

данных. Адресация происходит к 64
-
х разрядному двойному слову.





© ОАО «Мультиклет
» 2012
v
.0.1.
24
-
154


На рис. 1 показана логиче
ская адресация ПП для процессора, состоящего из 4
-
х
процессорных блоков.



Рис.1


С
труктура памяти данных

Программа процессора рассматривается как набор последовательно размещенных
параграфов. Параграф


это группа предложений, которая записана п
оследовательно, имеет
один

вход и один выход. В свою очередь, предложение


группа информационно связанных
операций.

Каждый параграф размещается, начиная с ПП0. Команды параграфа размещаются
последовательно. Каждая очередная команда размещается в сегменте
ПП, принадлежащем
очередному

процессорному блоку. При этом, команда формата

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



может быть размещена так
,

как показано на рис. 2
. Порядок считывания инструкций показан

увеличением насыщенности цветового тона.



Рис.
2



Р
азмещение параграфов в ПП




© ОАО «Мультиклет
» 2012
v
.0.1.
25
-
154



4.1.2.

Память данных (ПД)

Память данных представляет собой независимые блоки статических оперативно
-
запоминающих устройств (ПД0


ПД3), число

которых равняется числу процессорных блоков
(клеток),
адресация происходит побайтно. Особенностью организации памяти данных является
то, что

ячейки со смежными адресами находятся в разных блоках памяти данных. Для
сокращения

времени доступа к памяти реком
ендуется данные выравнивать на 8 байт.

Адресация памяти данных для 4
-
х сегментов показана на рис. 3.



Рис.
3



Структура памяти данных



4.1.3.

Регистры

Мультиклеточный процессор имеет в своем составе следующие регистры:

• регистры общего назначения (РОН [GPR


General Purpose Register]);

• регистры индексные (РИ [IR


Index Register]);

• регистры управляющие (РУ [CR


Control Register]).

Все выше перечисленные регистры являются 64
-
х разрядными. Обращение к регистру

осуществляется по его номеру или имени, котор
ому предшествует символ диеза ’#’. Общее
количество регистров


64. Все команды всех процессорных устройств при декодировании
имеют

одновременный доступ на чтение ко всем регистрам. Запись в регистры осуществляется
также

одновременно по завершению текущего

параграфа. Нумерация регистров является
сквозной и

начинается с нуля.


4.1.3.1.

Регистры общего назначения

Используются в качестве сверхбыстрой памяти (Scratchpad memory). Для обращения к

какому
-
либо регистру данного типа используются номера от 0 до 7. Имен у данно
го типа
регистров нет. Интерпретация значения регистра зависит от типа команды.




© ОАО «Мультиклет
» 2012
v
.0.1.
26
-
154



4.1.3.2.

Регистры индексные

Используются для косвенной адресации. Логическая с
труктура индексного регистра
по
казана на рис.4.



Рис.
4



Структура индексного регистра

Для обращения к

какому
-
либо регистру данного типа используются номера от 32 до 39.

Имен у данного типа регистров нет. В общем случае (см. исключения в описании конкретной

команды в разделе «Система команд ассемблера») при использовании регистра данного типа

в
качестве ар
гумента операции значение этого аргумента формируется согласно следующему

алгоритму:

1. вычисление исполнительного адреса, согласно следующей формуле:

ܣ
݀
݀
ݎ
݁
ݏ
ݏ

=

݊
݀
݁


+
ܤ
ܽ
ݏ
݁

2. обращение к памяти данных по исполнительному адресу
ܣ
݀
݀
ݎ
݁
ݏ
ݏ

для чтения/записи
зна
чения аргумента согласно типу используемой команды.

Модификация значения индексного регистра осуществляется аппаратно по завершению

параграфа в том случае, если установлен соответствующий

бит регистра MODR маски
измене
ния индексных

регистров (см. раздел «Регистры управления»), согласно следующей
формуле:


݊
݀
݁


= ((

݊
݀
݁


|

ܯ
ܽ
ݏ
݇
) + 1) &
ܯ
ܽ
ݏ
݇
,


где |


операция побитового «ИЛИ», &


операция побитового «И»,




операция
побитового

инвертирования.

В двух выше приведён
ных формулах используется це
лочисленная 32
-
х разрядная
ариф
метика. Значения старших 16 разрядов (с 16 по 31) полей Индекс (

݊
݀
݁

) и Маска
(
ܯ
ܽ
ݏ
݇
)заполняются нулями.


4.1.3.3.

Регистры управляющие

Процессор имеет в своем составе следующие управляющие регистры
:




© ОАО «Мультиклет
» 2012
v
.0.1.
27
-
154





4.1.3.4.

Регистр PSW управления вычислительным процессом


Регистр управления вычислительным процессом предназначен для управления
вычислительным процессом

Структура

регистра управления вычислительным процессом показана на рис
.
5




Рис.
5



Структура ре
гистра управления вычислительным процессом




© ОАО «Мультиклет
» 2012
v
.0.1.
28
-
154


Назначение разрядов регистра:

Для всех разрядов регистра:

0


отсутствие признака или события

1


наличие признака или события

0

Разрешение обработки немаскируемых прерываний. Признак не блокирует прием
прер
ываний регистром INTR, а блокирует только их дальнейшую обработку.

Устанавливается всегда только программно, снимается программно и апп
а
ратно

(при переходе на программу обработки прерываний).

1

Зарезервировано

2

Переход в режим ожидания. По окон
чании параграфа, в котором устанавливается

данный бит, ядро переходит в режим ожидания. В этом состоянии оно находится

до
прихода прерывания. По приходу прерывания данный признак снимается аппаратно
и управление передается на программу обслуживания прерыва
ний. По

окончании
обслуживания прерывания, если программистом не заданы какие
-
либо

действия,
продолжается выполнения приостановленной программы.

3

Зарезервировано

4

Остановка ядра. При установке в 1, по завершению текущего параграфа, ядро

п
рекраща
ет выборку команд. Возобновление р
аботы возможно только извне, пу
тем
аппаратного сброса или подачи на вход «wake_up» процессора напряжения

уровня
логической «1».

5

Программный сброс. При установке в 1, по зав
ершению параграфа процессор
про
ходит полную ин
ициализацию, ядро автоматически начинает работу с исходного

состояния, регистры сбрасываются в исходное

состояние. Содержимое оператив
ной
памяти не сохраняется.

6

Очередность исполнения команд чтения/записи:

0


команды записи исполняются только посл
е выполнения всех команд чтения

данного параграфа

1


контроль очередности не выполняется

7
-

31 Зарезервировано




© ОАО «Мультиклет
» 2012
v
.0.1.
29
-
154



4.1.3.5.

Регистр INTR прерываний

Регистр прерываний предназначен для сигнализации наличия прерываний, а также
инициации программных прерываний.

Структу
ра регистра прерываний на рис. 6


Рис.
6



Структура регистра
прерываний


Назначение разрядов регистра:

Для всех разрядов регистра:

0


отсутствие признака или события

1


наличие признака или события

0

Немаскируемое внутреннее прерывание (INMI)

1

Немаск
ируемое внешнее прерывание (ENMI)

2

Немаскируемое исключение в аппаратной части (PERE)

3

Немаскируемое программное исключение (PPGE)

4

Маскируемое программное исключение (MPRGE)

5

Прерывание от системного таймера (SWT)

6

Программное прерывание (SWI)

7


Маскируемое прерывание от UART0

8

Маскируемое прерывание от UART1

9

Маскируемое прерывание от UART2

10

Маскируемое прерывание от UART3

11

Маскируемое прерывание от I2C0

12

Маскируемое прерывание от I2C1

13

Маскируемое прерывание от SPI0

14

Маскиру
емое прерывание от SPI1

15

Маскируемое прерывание от SPI2

16

Маскируемое прерывание от I2S0




© ОАО «Мультиклет
» 2012
v
.0.1.
30
-
154


17

Маскируемое прерывание от GPTIM0

18

Маскируемое прерывание от GPTIM1

19

Маскируемое прерывание от GPTIM2

20

Маскируемое прерывание от GPTIM3

21

Маскируемо
е прерывание от GPTIM4

22

Маскируемое прерывание от GPTIM5

23

Маскируемое прерывание от GPTIM6

24


Маскируемое прерывание от PWM0

25

Маскируемое прерывание от RTC

26

Маскируемое прерывание от GPIOA

27

Маскируемое прерывание от GPIOB

28

Маскируемое пр
ерывание от GPIOC

29

Маскируемое прерывание от GPIOD

30

Маскируемое прерывание от ETHERNET0

31

Маскируемое прерывание от USB0


4.1.3.6.

Регистр MSKR маски прерываний


Регистр маски прерываний предназначен для маскирования прерываний.

Структура

регистра маски прер
ываний на рис.
7


Р
ис. 7



Структура регистра маски прерываний


Назначение разрядов регистра:

0


27

Маска для 4


31 битов регистра INTR

0


запрет обработки запроса прерывания

1


разрешение обработки прерывания

27


31

Зарезервировано




© ОАО «Мультиклет
» 2012
v
.0.1.
31
-
154



4.1.3.7.

Регистр ER оши
бок

Структара регистра ошибок на рис. 8


Р
ис. 8



Структура регистра ошибок


Назначение разрядов регистра:

Для всех разрядов регистра:

0


отсутствие признака или события

1


наличие признака или события

0


1 Ошибки с шиной

2

Зарезервировано

3

Зарезерв
ировано

4

Ошибка «деление на ноль» в 0 ядре

5

Ошибка «деление на ноль» в 1 ядре

6

Ошибка «деление на ноль» во 2 ядре

7

Ошибка «деление на ноль» в 3 ядре

8

Ошибка «неверный адрес» в 0 ядре, сформирован не правильный адрес

9

Ошибка «неверный адрес» в 1

ядре

10


Ошибка «неверный адрес» во 2 ядре

11

Ошибка «неверный адрес» в 3 ядре

12

Ошибка «неверная инструкция» в 0 ядре, из памяти программ прочитана
несуществующая инструкция

13

Ошибка «неверная инструкция» в 1 ядре

14

Ошибка «неверная инструкция» во

2 ядре

15

Ошибка «неверная инструкция» в 3 ядре

16
-

31 Зарезервировано




© ОАО «Мультиклет
» 2012
v
.0.1.
32
-
154



4.1.3.8.

Регистр IRETADDR адреса возврата

Регистр адреса возврата предназначен для сохранения адреса возврата памяти программ,

формируемого только при прерывании. Следует заметить, что факти
ческий уход на первичный

обработчик прерываний осуществляется только по окончании выполнения всех

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

адреса возврата

сохраняется
адрес следующего параграфа. Если адрес перех
ода на следующий параграф не из
вестен (не был
сформирован), тогда процессор перейдёт в состояние ожидания сигнала «start»

(ожидание
внешнего перезапуска).

Структара регистра первичног
о обработчика прерываний на рис. 9


Р
ис. 9



Структура регистра адреса возврата


Назначение разрядов регистра:

0


7


Адрес возврата, формируемый только при прерывании

8


31

Зарезервировано



4.1.3.9.

Регистр STVALR периода системного таймера

Регистр периода сис
темного таймера предназначен для сохранения значения периода
системного таймера и доступен только для чтения.

Структура регистра периода системного таймера на рис. 10


Р
ис.
10



Структура регистра периода системного таймера




© ОАО «Мультиклет
» 2012
v
.0.1.
33
-
154


Назначение разрядов регистра:

0


31

Значение периода счетчика
в периодах системной частоты по
сле предделителя

си
стемного таймера


4.1.3.10.

Регистр STCR управления системным таймером

Регистр управления системным таймером предназначен для управления системным
таймером. Системный таймер предназна
чен для формирования заданных периодических или
однократных временных интервалов. Таймер представляет собой декрементирующий счетчик с

делителем тактового сигнала на входе. Начальное значения счетчика записывается в регистр

STVALR, управление осуществляетс
я через регистр STCR. По истечении заданного временного

интервала формируется запрос на обработку прерывания

Структура регистра управления системным таймером на рис. 11


Р
ис. 11



Структура регистра управления системным таймером


Назначение разрядов реги
стра:

0

Разрешение работы счетчика

0


запрещено

1


разрешено

1

Разрешение циклической работы таймера (если запрещена циклическая работа,

то
таймер после одного периода выключится, бит 0 данного регистра будет установлен в
«0»):

0


запрещено

1


разреше
но

2

Признак завершения счета периода, заданного в STVAL (по данному признаку

вырабатывается запрос на обработку прерывания от таймера):

0


запрещено

1


разрешено

3
-

7

Зарезервировано




© ОАО «Мультиклет
» 2012
v
.0.1.
34
-
154


8


15

Значение предделителя счетчика. Системная частота делится на з
начение,
заданное в данных битах. Поделенная частота является тактовой для счетчика
таймера.

16
-

31

Зарезервировано



4.1.3.11.

Регистр IHOOKADDR первичного обработчика прерываний


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

Структура регистра первичного обработчика прерываний на рис. 12


Р
ис. 12



Структура регистра первичного обработчика прерываний


Назначение разрядов регистра:

0
-

7

Значение адреса первичного обработчика прерыв
аний

8

-

31

Зарезервировано


4.1.3.12.

Регистр INTNUMR номера прерывания

Регистр номера прерывания предназначен для сохранения номера самого приоритетного

разрешенного прерывания на данный момент и доступен только для чтения.

Структура регистра номера прерывания пок
азана на рис. 13


Р
ис. 13



Структура регистра номера прерывания




© ОАО «Мультиклет
» 2012
v
.0.1.
35
-
154


Назначение разрядов регистра:

0
-

5

Номер самого приоритетного разрешенного прерывания на данный момент

6
-

31

Зарезервировано


4.1.3.13.

Регистр MODR маски модификации индексных регистров


Регистр
маски модификации индексных регистров предназначен для указания
необходимости пересчёта значения индексного регистра, номер которого определяется согласно
формуле

32 +

, где




номер бита регистра MODR, по заверше
нию выполнения операций
парагра
фа. Прав
ило изменения значения индексного регистра смотри в разделе «Регистры
индексные,

16.3.2».

Структура регистра маски модификации индексных регистров показана на рис.
14.


Р
ис. 14



Структура регистра маски модификации индексных регистров


Назначение разрядо
в регистра:

0

Разрешение модификации индексного регистра номер 32:

0


запрещено

1


разрешено

1

Разрешение модификации индексного регистра номер 33:

0


запрещено

1


разрешено

2

Разрешение модификации индексного регистра номер 34:

0


запрещено

1


ра
зрешено

3

Разрешение модификации индексного регистра номер 35:

0


запрещено

1


разрешено

4

Разрешение модификации индексного регистра номер 36:




© ОАО «Мультиклет
» 2012
v
.0.1.
36
-
154


0


запрещено

1


разрешено

5

Разрешение модификации индексного регистра номер 37:

0


запрещено

1


разреш
ено

6

Разрешение модификации индексного регистра номер 38:

0


запрещено

1


разрешено

7

Разрешение модификации индексного регистра номер 39:

0


запрещено

1


разрешено

8
-

31

Зарезервировано



4.1.4.

Коммутатор


Коммутатор используется для обмена результатами

команд между командами внутри

одного параграфа.

Параграф


группа предложений, которая записана последовательно, имеет один вход и

один выход.

Предложение


группа информационно связанных операций.

Все команды процессора внутри одного параграфа условно ну
меруются, начиная с нуля.

Ссылка на результат текстуально предшествующей команды записывается как @
ܰ
.
ܰ

вычисляется согласно следующей формуле

ܰ

=
ܰ
ݎ
݁
ݍ



ܰ
ݎ
݁
ݏ
,

где
ܰ
ݎ
݁
ݍ



номер команды, запрашивающей результат текстуально предшествующей
кома
нды,

ܰ
ݎ
݁
ݏ



номер текстуально предшествующей команды, результат которой
запрашивается.

Максимальное количество результатов текстуально предшествующих команд, которое

может быть сохранено в коммутаторе,


63.

Ссылка на результат текстуально предшествующ
ей команды, которая по определению

НЕ
возвращает результат, приведет к ошибк
е

на этапе компиляции.




© ОАО «Мультиклет
» 2012
v
.0.1.
37
-
154



4.1.5.

Выборка команды

Начальный адрес памяти прогграмм, с которого процессорные блоки начинают выборку

команд 0.

Необходимыми условиями выборки и последующего дек
одирования очередной команды

всеми процессорными блоками является завершение декодирования предыдущей команды
всеми

процессорными блоками, считывание и размещение очередной команды на регистре
команд

всеми процессорными блоками (у каждого процессорного бло
ка свой регистр команд).

Выборка и декодирование команд продолжается до т
ех пор пока не будет выбрана
по
следняя команда параграфа. Адрес нового параграфа может поступить как в любой момент

выборки команд текущего параграфа, так и после завершения выборки к
оманд. Он поступает

всем процессорным блокам одновременно. Если к моменту

выборки последней команды
пара
графа адрес следующего параграфа не вычислен, то выборка приостанавливается до
получения

адреса. Если после завершения выполнения всех команд пар
аграфа
адрес
следующего парагра
фа не сформирован, то процессор перходит в состояние ожидания сигнала
«start» (ожидание

внешнего перезапуска).


4.2.

Общие сведения об ассемблере


Представленный ассемблер используется для написания программ для мультиклеточного

процессор
а. Ассемблер обладает следующими характеристиками:



использование раздельной памяти команд для каждого процессорного блока (клетки)
и
общей памяти данных;



32
-
х разрядная адресация памяти команд;



32
-
х разрядная адресация памяти данных;

Ассемблер может быть запущен на IBM PC совместимых компьютерах обладающих
следующими характеристиками:

• операционная система: Microsoft Windows 2000, XP, Vista, 7.

Минимальные требования к аппаратной части:

• процессор не ниже 500МГц;

• оперативная память

не менее 512Мб;

• видеокарта должна поддерживать минимально разре
шение 1024х768 при 256 цветах и
а
ппаратное ускорение функций DirectX версий 5.0 и выше.




© ОАО «Мультиклет
» 2012
v
.0.1.
38
-
154



4.2.1.

Запуск ассемблера и опции командной строки

Представленный ассемблер запускается из командной строки к
омандой as, аргументом

которой является файл с исходным кодом. Поддерживаются также следующие опции:

-
I,
-

-
include
-
path=DIR


добавить директорию DIR в список директорий, используемых

для поиска файла, подключаемого директивой ассемблера «.include»

-
o,
-

-
output=objfile


поместить вывод в объектный файл objfile

-
V


напечатать номер версии ассемблера

-
h,
-

-
help


показать это сообщение и выйти


4.3.

Основные понятия языка


4.3.1.

Комментарии

В ассемблере поддерживаются следующие типы комментариев:

• однострочный комме
нтарий

данный тип комментария начинается с ’;’ или ’//’ и заканчивается концом строки

• многострочный комментарий

данный тип комментария начинается с ’/*’ и заканчивается ’*/’, т. е. все, что находится

между этими ограничителями игнорируется; вложенные ком
ментарии не допускаются.


4.3.2.

Константы

В ассемблере поддерживаются числовые и символьные (литеральные) константы.


4.3.2.1.

Числовые константы

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

1. В виде шестнадцатеричного числа

Такое число начина
ется с префикса ’0x’ или ’0X’, за которым следует одна или более

шестнадцатеричных цифр ’0123456789abcdefABCDEF’. Для изменения знака используется

префиксный оператор ’
-
’.

2. В виде восьмеричного числа

Такое число начинается с нулевой цифры, за которой сле
дует одна или более
восьмеричных

цифр ’01234567’. Для изменения знака используется префиксный оператор ’
-
’.

3. В виде двоичного числа




© ОАО «Мультиклет
» 2012
v
.0.1.
39
-
154


Такое число начинается с префикса ’0b’ или ’0B’, за которым следует одна или более

двоичных цифр ’01’. Для изменения знак
а используется префиксный оператор ’
-
’.

4. В виде целого десятичного числа

Такое число начинается с ненулевой цифры, за которой следует одна или более
десятичных

цифр ’0123456789’. Для изменения знака используется префиксный оператор ’
-
’.

5. В виде веществ
енного десятичного числа с плавающей точкой, записанного в
следующем

формате:

а) начинается с префикса ’0f’ или ’0F’,

б) далее опционально следует знак числа ’+’ или ’
-
’,

в) далее опционально следует целая часть числа, состоящая из нуля или более
десятичны
х цифр,

г) далее опционально следует дробная часть числа, начинающаяся с символа точки ’.’ и

состоящая из нуля или более десятичных цифр,

д) далее опционально следует экспоненциальная часть числа, состоящая из:



’e’ или ’E’



знака ’+’ или ’
-
’ экспоненциально
й части (опционально)



одной или более десятичных цифр.

По крайней мере одна из целой или дробной частей должна быть задана.


4.3.2.2.

Символьные (литеральные) константы

В ассемблере возможны следующие варианты представления символьных (литеральных)

констант:

1. В ви
де строки (последовательности литералов)

Строковые константы (последовательность литералов) записываются в двойных
кавычках.

Они могут содержать любые возможные символы (литералы), а также следующие
escape
-
последовательности:


\
b


забой (backspace); ASCI
I код в восьмеричной системе счисления 010.


\
f


новая страница (FormFeed); ASCII код в восьмеричной системе счисления 014.


\
n


перевод строки (newline); ASCII код в восьмеричной системе счисления 012.


\
r


возврат каретки (carriage
-
Return); ASCII к
од в восьмеричной системе счисления

015.


\
t


горизонтальная табуляция (horizontal Tab); ASCII код в восьмеричной системе

счисления 011.




© ОАО «Мультиклет
» 2012
v
.0.1.
40
-
154



\

oct
-
digit oct
-
digit oct
-
digit


код символа в восьмеричной системе счисления. Код

символа состоит из 3
-
х восьмери
чных цифр. Если

заданное число превышает макси
мально
возможное восьми разрядное значение, будут использованы только младшие

восемь разрядов.


\
x hex
-
digit hex
-
digit


код символа в шестнадцатеричной системе счисления. Код

символа состоит из 2
-
х шестнадцат
еричных цифр. Ре
гистр литерала ’x’ не имеет зна
чения. Если
ни одна из двух шестнадцатеричных ц
ифр на задана, используется зна
чение ноль.


\
\



соответствует литералу ’
\
’.


\
.


соответствует литералу ’.’.


\
anything
-
else


соответствует любому символу,
за исключением выше перечисленных.

2. В виде одиночного символа (литерала)

Одиночный символ (литерал) может быть представлен в виде одинарной кавычки «´»,

непосредственно за которой следует необходимый симв
ол (литерал) или escape
-
последо
вательность. Поэтом
у для представления символа (литерала) «
\
», необходимо написать

«´
\
\
», где первый символ (литерал) «
\
» экранирует в
торой «
\
». Символ перевода стро
ки,
непосредственно следующий за «´», интерпретируется как символ (литерал) «
\
n» и

не является
окончанием выра
жения. Значением символьной (литеральной) константы в

целочисленном
выражение является машинный код, ра
змером в один байт, символа (ли
терала). as использует
ASCII кодировку символов (литералов): ´A имеет целочисленное

значение 65, ´B имеет
целочисленное зн
ачение 66, и так далее.


4.3.3.

Секции

Не вдаваясь в подробности, секция представляет собой непрерывный диапазон адресов,

все данные которого трактуются одинаково для некоторых определенных действий.

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

создает объектный

файл, предполагая, что данная часть программы располагается с нулевого адреса. Сборка самой

исполняемой программы осуществляется компоновщиком из одного или нескольких объектных

файлов, созданных ассемблером, в результате чего каждому об
ъектному файлу присваивается

конечный адрес таким образом, что ни один объектный файл не перекрывается другим.

Во время компоновки программы блоки байтов, как единое целое, перемещаются на те

адреса, которые они будут иметь во время выполнения программы; и
х длина и порядок байтов в

них не изменяются. Именно такой блок байтов называется сек
цией, а процедура назначения
ад
ресов этим секциям


перемещением (relocation). Помимо назначения секциям адресов

в
ремени

выполнения и их перемещения, на этапе компоновки
приводятся в соответствие



© ОАО «Мультиклет
» 2012
v
.0.1.
41
-
154


значения сим
волов объектного файла, так чтобы все ссылки на эти символы имели верные
адреса времени

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

.text, в которой ассемблер расположил исполняемые инстру
кции программы,
может увеличить
ся из
-
за выравнивания параграфов (подробнее см. раздел «Память программ
(PM)»).

Объектный файл, созданный ассемблером, включае
т в себя, по крайней мере, три секции,

каждая из которых может быть пустой:

1. секция .text. В этой секции располагаются исполняемые инструкции программы,
которые

в процессе компоновки будут размещены в памяти программ.

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

3. секция .bss. Данная секция содержит байты с нулев
ыми значениями перед началом
вы
полнения программы. Она используется для хранени
я неинициализированных переменных

или общего блока памяти данных.

В процессе создания объектного файла секция .text размещается с адреса 0 памяти
программ; секция .data размещается с адреса 0 памяти данных, следом за которой размещается

секция .bss.

Секции

.text и .data присутствуют в объектном файле в не зависимости от того содержат

они какие
-
либо директивы или нет.

Для того, чтобы сообщить компоновщику какие данные
и
зменяются во время перерас
пределения памяти (перемещения секций), а также согласно каким
п
равилам они изменяются,

ассемблер записывает в объектный файл всю необходимую
информацию в отдельные секции

(как правило для секции .text в секцию .rel.text, для секции
.data в секцию .rel.data).

Кроме секций .text, .data, .bss возможно использован
ие абсол
ютной секции. При
компо
новке программы адреса в абсолютной секции не изменяются.


Помимо выше перечисленных секций существует также неопределённая секция. Любой

символ, на который имеется ссылка и, который не был определен, на этапе ассемблирования

относит
ся к неопределенной секции. Общий (совместно исп
ользуемый) символ, который
адре
сует именованный общий блок, также на этапе ассемблирования относится к
неопределенной

секции. Значение атрибута связывания любого неопределённого символа по
умолчанию равно

«GL
OBAL».




© ОАО «Мультиклет
» 2012
v
.0.1.
42
-
154



4.3.3.1.

Подсекции

Ассемблированные байты размещаются в двух секциях: .text и .data. Для упорядочения

различных групп данных внутри секций .text или .data в генери
руемом объектном файле
ис
пользуются подсекции. Внутри каждой секции могут находиться пронумеров
анные
подсекции,

начиная с нуля. Объекты, ассемблированные в одну и ту же подсекцию, в объектном
файле

располагаются вместе с другими объектами той же подсекции.

Подсекции располагаются в объектном файле в порядк
е возрастания их номеров.
Инфор
мация о подсе
кциях в объектном файле не сохраняется.

Для того, чтобы указать в какую
подсекцию ассемб
лировать ниже следующие инструк
ции, необходимо указать номер подсекции
в директиве .text/
.data. Если в исходном коде про
граммы подсекции не используются, то все
инструк
ции ассемблируются в подсекцию с номером

0.

Каждая секция имеет «счетчик текущего места», увеличивающийся на один при
ассемблировании каждого нового байта в эту секцию. Поскольку

подсекции являются просто
удоб
ством и ограничены использованием только внутри

ассембле
ра, не существует «счетчиков
те
кущего места» подсекций. «Счетчик текущего места» секци
и, в которую в данный момент
ас
семблируются инструкции, называется активным счетчиком места.

Секция bss используется как место для хранения глоб
альных переменных
. Для этой
сек
ции, используя директиву .lcomm, можно выделить адресное пространство без указания
какие

данные будут загружены в нее до исполнения программы.

Во время начала выполнения
про
граммы содержимое секции .bss заполняется нулями.


4.3.4.

Символы

Символы (ид
ентификаторы, переменные и т. п.) испо
льзуются в ассемблере для
имено
вания различных сущностей.


4.3.4.1.

Система имён символов

Система имён в ассемблере построена по следующему принципу


имена могут
состоять

только из прописных и печатных букв латинского алфавита,

цифр, символа
подчеркивания

(«_») и символа точки («.»), при этом имя не может начинаться с цифры.
Учитывается регистр

букв в имени.


4.3.4.2.

Метки

Метка определяется как символ, за которым следует двоеточие «:». Этот символ
представляет текущее значение активного

счетчика места в зависимости от текущей секции



© ОАО «Мультиклет
» 2012
v
.0.1.
43
-
154


(.text,

.data, .bss). Переопределение меток в ассемблере не допускается
.


4.3.4.3.

Символы с абсолютным значением

Данные символы могут быть определены при помощи следующих директив ассемблера:


Значения данных символов никогда не изменяются компоновщиком. В

общем случае, символ, определённый при помощи перечисленных директив ассемблера, может

не иметь абсолютного значения.


4.3.4.4.

Атрибуты символов

Каждый символ помимо имени имеет атрибуты «Зн
ачение», «
Тип/Связывание»,
«Раз
мер», а также атрибут принадлежности символа к какой
-
либ
о секции. При использовании
сим
вола без его определения все его атрибуты имеют нулевые значения, а сам символ относится
к

неопределенной секции.

Значение символа является 32
-
х раз
рядным. Для символов, адресующих местоположение

в секциях .text, .data, .bss, а также абсолютной, значением является смещение в адресах
относительно начального положения секции до метки. В процессе компоновки программы
значения

таких символов для секций .t
ext, .data, .bss изменяются, поск
ольку изменяются
начальные поло
жения данных секций. Значения абсолютных символов в процессе компоновки
не изменяются.

Атрибут символа «Тип/Связывание» определяет тип

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

.type, а для значения связывания


директивы ассемблера .local, .global, .weak.

А
трибут символа «Размер» н
а этапе ассемблировани
я по умолчанию всегда
устанавли
вается равным нулю. Значение данного атрибута может быть изменено при помощи
директивы

ассемблера .size.

Атрибут принадлежности символа к какой
-
либо секции устанавливается ассемблером
автоматически, в за
висимости от текущей секции ассемблирования. Другими словами данный

атрибут указывает
,

в какой секции определён символ.


4.3.5.

Выражения

Выражение определяет адрес или числовое значение. Результат выражения должен быть
абсолютным числом или смещением в определенн
ой секции.




© ОАО «Мультиклет
» 2012
v
.0.1.
44
-
154



4.3.5.1.

Пустые выражения

Пустое выражение не имеет значения: это просто проп
уск. В случае отсутствия
выраже
ния в том месте исходного кода, где оно необходимо, ассемблер использует значение
ноль.


4.3.5.2.

Целочисленные выражения

Целочисленное выражение


это оди
н или более аргументов, разделенных операторами.


4.3.5.3.

Аргументы

В качестве аргументов выражения могут выступать символы (идентификаторы), числа

или подвыражения.

Значением символа в какой
-
либо секции secName является смещение относительно
начала

этой секции. В
качестве секции secName могут выступать секции .text, .data, .bss, а также

абсолютная (*ABS*) и неопределённая (*UND*). Значение представляет собой 32
-
х разрядное

целое число со знаком в двоичном дополнительном коде.

Числа, как правило, являются целыми. Ес
ли выражение состоит из одного аргумента,

который представляет
собой

число с плавающей точкой,

то результатом вычисления выра
жения
будет именно это число без каких
-
либо преобразований. Если выражение состоит из

нескольких
аргументов, разделенных операторам
и, либо из

префиксного оператора, за кото
рым следует
один единственный аргумент, то при вычислении выражения значение аргумента,

которое
представляет
собой

число с плавающей точкой, будет заменено на нулевое значение,

а также
выведено соответствующее преду
преждение.

Подвыражения представляют из себя такие же выраже
ния, заключенные в круглые
скоб
ки «()», либо префиксный оператор, за которым следует аргумент.



4.3.5.4.

Операторы

Операторы представляют
собой

арифметические функции и делятся на префиксные и

инфиксные.

П
рефиксные операторы являются одно аргументным
и. Аргумент должен быть
абсолют
ным. Доступны следующие префиксные операторы:

«−» Отрицание. Двоичное дополнительное отрицание.

«

» Дополнение. Побитовое отрицание.




© ОАО «Мультиклет
» 2012
v
.0.1.
45
-
154


«!» Логическое НЕ. Возвращается 1, если аргумен
т не нулевой, и 0, в противном случае.

Инфиксные операторы являются двух аргументными
. Данные операторы имеют
приори
тет, который определяет очередность их выполнения. Опер
ации с равным приоритетом
выпол
няются слева на право. Аргументы всех инфиксных операт
оров, за исключением
операторов

«+» и «−» должны быть абсолютными. Доступны следующие инфиксные операторы
в порядке

снижения приоритета:

1.

«*» Умножение.

«/» Целочисленное деление.

«%» Остаток (взятие остатка от целочисленного деления).

«

» Сдвиг влево.

«

» Сдвиг вправо.

2.

«|» Побитовое Или.

«&» Побитовое И.

«

» Побитовое Исключающее Или

«!» Побитовое Или
-
Не

3.

«+» Сложение. Если один из аргументов абсолютны
й, то результат относится к
сек
ции другого аргумента. Сложение двух аргументов
, определенных
отн
осительно раз
личных секций недопустимо.

«−» Вычитание. Если правый (второй) аргумент абсолютен, то результат
относится

к секции левого (первого) аргумента. Если оба аргументы определены
относительно

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

« » Сравнение на равенство.

«! » или «<>» Сравнение на неравенство.

«<» Сравнение на меньше, чем.

«>» Сравнение на больше, чем.

«> » Сравнение на больше, чем, либо равно.

«< » Сравн
ение на меньше, чем, либо равно.

В результате выполнения какой
-
либо операции сравнения, возвращается
-
1, в случае если

результат истинный, и 0, если ложный. Операции сравнения интерпретируют аргументы

как
знаковые.

4.

«&&» Логическое И.

«||» Логическое ИЛ
И.




© ОАО «Мультиклет
» 2012
v
.0.1.
46
-
154


Данные логические операции могут быть использованы для объединения результатов
двух

подвыражений. В результате выполнения какой
-
либо логической операции, возвращается

1, в случае если результат истинный, и 0, если ложный.


4.4.

Система команд ассемблера

Коман
да мультиклеточного процессора, как и любого другого, в общем случае,
представляет собой закодированную по некоторому набору правил инструкцию процессору на
выполнение какой
-
либо операции над некоторым набором операндов.

В мультиклеточном процессоре сущест
вуют короткие команды, размерностью 32 бита, и
длинные, размерностью 64 бита. В команде мультиклеточного процессора закодированы:



код операции, определяющий действие, которое необходимо в
ы
полнить процессору;



суффикс операции, определяющий правила формирова
ния операндов операции;



тип операции, определяющий размер операндов и интерпретацию их значений;



набор данных (значение ссылки на результат команды, значение ссылки на регистр,
непосредственное значение) необходимый для формирования операндов;



прочие данн
ые, необходимые для выполнения операции или действий, связанных с
данной операцией.


4.4.1.

Условные обозначения

@

,@

1,@

2


обозначает ссылку на результат команды, который сохранен в
коммутаторе, относительно текущей команды (см. раздел «Коммутатор»).

#




о
бозначает ссылку на регистр (см. раздел «Регистры»).

#
ܩ
ܲ




обозначает ссылку на регистр общего назначения (см. раздел «Регистры общего

назначения»).

#





обозначает ссылку на индексный регистр (см. раздел «Регистры индексные»).

#



݊
݀
݁

, #


݉
ܽ
ݏ
݇
, #


ܾ
ܽ
ݏ
݁



обозначает индекс, маску и базу соответственно
индексного

регистра


.

#
ܥ




обозначает ссылку на управляющий регистр

(см. раздел «Регистры
управляю
щие»).



8,


32


обозначает непосредственное значение размером байт (8 би
т), слово (32
бита)

ܣ

ܩ
,
ܣ

ܩ
1,
ܣ

ܩ
2


общее обозначение аргументов команды

ܦ
ܯ
(
ܣ
ܦ
ܦ

)


общее обозначение обращения к памяти данных по адресу
ܣ
ܦ
ܦ





© ОАО «Мультиклет
» 2012
v
.0.1.
47
-
154


ܧ

ܲ




общее обозначение выражения


ܧ

(
ܧ

ܲ

)


общее обозначение результата вычис
ления выражения

(|
ܾ
|
݈
|
ݍ
)


общее обозначение выбора одного из возможных значений, т. е. либо ничего,

либо
ܾ
, либо
݈
, либо
ݍ


4.4.2.

Типы операций

Мультиклеточный процессор, в общем случае, может выполнять операции над
следующими типами операндов:

• знаковый
/ беззнаковый целый, размерностью один байт (8 бит);

• знаковый / беззнаковый целый, размерностью четыре байта (32 бита);

• беззнаковый целый, размерностью восемь байтов (64 бита);

• знаковый вещественный одинарной точности, размерностью четыре байта (32 б
ита);

• знаковый упакованный, размерностью 8 байтов (64 бита), старшршие четыре байта (с
32

по 63 биты) представляют собой старшую часть, а младшие четыре байта (с 0 по 31 биты)

представляют собой младшую часть (тип старшей и младшей частей


вещественный

одинарной точности);

• знаковый комплексный, размерностью 8 байтов (64 бита), старшршие четыре байта (с

32 по 63 биты) представляют собой реальную часть, а младшие четыре байта (с 0 по 31
биты
)
представляют собой мнимую часть (тип реальной и мнимой частей


вещественный

одинарной
точности);

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

соответствующего типу операции.

В таблице
ниже

пока
заны мнемоники суффиксов типов операций.





© ОАО «Мультиклет
» 2012
v
.0.1.
48
-
154



4.4.3.

Общий принцип построения команд в ассемблере

На рисунке 15 изображён общий синтаксис команд мультиклеточного процессора.


4.4.3.1.

Общие правила формирования аргументов команд и их
и
нтерпретация

В общем случае команды могут

быть двух
-
агументными, одно
-
аргументными и без аргу
-
ментов.

Согласно синтаксическому
описанию

(рис. 15), в качестве первого аргумента двух
-
аргументной

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

Второй аргумент двух
-
аргументной команды или аргумент одно
-
аргументной команды

может быть задан с использованием одного из следующих вариантов:

• используется результат выполнения одной из 63
-
х предыдущих команд, со
держащийся

в
коммутаторе и заданный ссылкой на это значение

• используется значение регистра общего назначения (#
ܩ
ܲ

) или значение управляющего



Рис.15


Синтаксическое описание команды мультиклеточного процессора




© ОАО «Мультиклет
» 2012
v
.0.1.
49
-
154


регистра (#
ܥ

)

• используется знач
ение, считанное из памяти данных по

адресу, вычисляемому на
основа
нии значения индексного регистра (#


), согласно формуле

#


ܾ
ܽ
ݏ
݁

+ #



݊
݀
݁


• используется непосредственное значение, заданное в командном слове, размерностью
байт

(


8) или
слово (


32) в зависимости от типа команды

• используется значение, считанное из памяти данных по

адресу, вычисляемому на
основа
нии значения индексного регистра (#


) и непосредственного 32
-
х разрядного значения,

заданного в командном слове, согласно фо
рмуле

#


ܾ
ܽ
ݏ
݁

+ #



݊
݀
݁


+


32

Исключения из правил формирования аргументов команд и их интерпретации смотри в

описании конкретной команды.


4.4.3.2.

Правила формирования результатов команд

В общем случае команды формируют результат, сохраняемый в ком
мутаторе. Размер

значения результата любой команды соответствует размеру коммутатора


64 бита.

Результат нагружен значениями флагов:






© ОАО «Мультиклет
» 2012
v
.0.1.
50
-
154


Флаги результата устанавливаются в зависимости от
типа операции и могут иметь
зна
чение не для каждой команды. Более п
одробную информ
ацию можно найти в описании
кон
кретной команды.


4.4.4.

Описание команд


4.4.4.1.

abs (ABSolute value)

Абсолютное значение

ܽ
ܾ
ݏ

ܣ

ܩ

Назначение: операция вычисления абсолютного значения аргумента

Синтаксис:

Наличие результата: да

Алгоритм работы:



вычисл
ить абсолютное значение аргумента
ܣ

ܩ
;



установить флаги;



поместить результат вместе с флагами в коммутатор;


Рис.16


Синтаксическое описание команды
abs

Состояние флагов результата после выполнения команды:





© ОАО «Мультиклет
» 2012
v
.0.1.
51
-
154


Применение: команда abs используется
для вычисления

абсолютного значения числа.
Ре
зультат вычисления абсолютного значения минимальног
о возможного целого числа, в
за
висимости от типа операции, выходит за границы разрядной сетки, о чём сигнализирует флаг
переполнения (
ܱ
ܨ
).

Пример:

1 . t e x t

2

3 A:

4 ge t sb −128

5 abssb @1

6 a b s s l 0xF0010203

7 abs f 0 f−12 .
8 5

8 complete


Пояснения к примеру



в строке №1 директивой ассемблера .text устанавливается текущая секция
ассемблирования


секция исполняемых инструкций text;



в строке №3 объяв
ляется символ (идентификатор)
, который является меткой в
текущей секции ассемблирования (text), и инициализируется текущим значением адресса
ассемблирования, а также начинает новый параграф;



в строке №4 командой getsb помещается в коммутатор 8
-
ми разр
ядное целое знаковое
число (константа −128);



в строке №5 командой abssb вычисляется абсолютное значение результата выполнения
предшествующей команды: @1


результат выполнения команды извлечения в строке №4;
аргумент команды abssb согласно суффиксу sb ин
терпретируются как целое знаковое
размерностью байт; результат выполнения команды интерпретируются также как целое
знаковое размерностью байт и помещается в комутатор с установленным флагом переполнения
(
), так как значение 128 выходит за границы разря
дной сетки знакового целого числа
размерностью байт;



в строках №6,№7 показаны другие варианты использования команды abs;



в строке №8 командой complete завершается текущий параграф
.




© ОАО «Мультиклет
» 2012
v
.0.1.
52
-
154



4.4.4.2.

adc (ADdition with Carry)

Сложение с переносом

ܽ
݀
ܿ

ܣ

ܩ
1
,
ܣ

ܩ
2

Назначение: операция целочисленного сложения с учётом флага переноса (
ܥ
ܨ
)
результата предыдущего сложения командой
ܽ
݀
݀

Синтаксис:


Рис.1
7



Синтаксическое описание команды
adc

Наличие результата: да

Алгоритм работы:



выполнить сложение значения фла
га переноса (
ܥ
ܨ
) аргумента
ܣ

ܩ
1 со значением

аргумента
ܣ

ܩ
2;



установить флаги;



поместить результат вместе с флагами в коммутатор;

Состояние флагов результата после выполнения команды:

Применение: команда adc используется при сложении длинных це
лых чисел. В отличии

от одноимённой команды
большинства

других процессоров, команда adc мультиклеточного


процессора складывает значение второго аргумента с единицей, если флаг переноса (
ܥ
ܨ
)

первого аргумента установлен, в противном случае в качестве ре
зультата возвращается

просто
значение второго аргумента.




© ОАО «Мультиклет
» 2012
v
.0.1.
53
-
154







© ОАО «Мультиклет
» 2012
v
.0.1.
54
-
154


Пояснения к примеру



в строке №5 директивой ассемблера .data устанавливается текущая секция ассемблирования
-

секция инициализированных данных data;



в строках №7,№9,

11 объявляются символы (
идентификаторы)
ܣ
,
ܤ
,
ܥ
,

которые яв
ляются
метками в текущей секции ассемблировани
я (data), и инициализируется те
кущими значениями
адреса ассемблирования;



в строках №№8,10,12 директивой ассемблера .long в текущую секцию ассемблирования

по
текущему адре
су ассемблирования записываются 32
-
х рарядные числа: 0

00010203,

0

ܣ
ܣ
ܤ
ܤ
ܥ
ܥ
ܦ
ܦ
, 0

04050607, 0

ܧ
ܧ
ܨ
ܨ
0908, 0

00000000, 0

00000000;



в строке №14 директивой ассемблера .text устанавл
ивается текущая секция ассембли
рования
-

секция исполняемых ин
струкций text;



в строке №16 объявляется символ (идентификатор)
ܦ
, который является меткой в текущей
секции ассемблирования (text), и инициализ
ируется текущим значением адре
са
ассемблирования, а также начинает новый параграф;



в строках №№17,18,19,20 ко
мандами rdl читаются и
з памяти данных четыре 32
-
х раз
рядных
целых беззнаковых числа по адресам
ܣ
,
ܣ

+ 4,
ܤ
,
ܤ

+ 4 соответственно и

помещаются в
коммутатор;



в строке №21 командой addl складываются резуль
таты выполнения двух предшеству
ющих
команд: @3


результат выполнения коман
ды чтения в строке №18, @1


ре
зультат
выполнения команды чтения в строке №20
; оба аргумента команды addl со
гласно суффиксу l
интерпретируются как 32
-
х разрядные целые беззнаковые числа;

результат выполнения
команды также интерпр
етируются как 32
-
х разрядное целое

беззнаковое число и помещается в
коммутатор;



в строке №22 командой addl складываются резуль
таты выполнения двух предшеству
ющих
команд: @5


результат выполнения коман
ды чтения в строке №17, @3


ре
зультат
выполнения ком
анды чтения в строке №19
; оба аргумента команды addl со
гласно суффиксу l
интерпретируются как 32
-
х разрядные целые беззнаковые числа;

результат выполнения
команды также интерпретируются как 32
-
х разрядное целое

беззнаковое число и помещается в
коммутатор
;



в строке №23 командой adcl складываются резуль
таты выполнения двух предшеству
ющих
команд: @2


результат выполнения команды

сложения в строке №20 (фактиче
ски
используется только значение флага переполнения
ܱ
ܨ
), @1


результат выполне
ния команды
сложени
я в строке №21; оба аргумента команды addl согласно суффиксу

l интерпретируются как



© ОАО «Мультиклет
» 2012
v
.0.1.
55
-
154


32
-
х разрядные целые без
знаковые числа; результат выпол
нения команды также
интерпретируются как 32
-
х разрядное целое беззнаковое число

и помещается в
коммутатор
;



в строке

№24 командой wrl осуществляется запись в память данных по адресу
ܥ

результата
выполнения предшествующей команд
ы: @1


результат выполнения ко
манды сложения с
учётом флага переноса в строке №24;



в строке №25 командой wrl осуществляется запись в память д
анных по адресу
ܥ

+ 4

результата выполнения предшествующей команд
ы: @4


результат выполнения ко
манды
сложения в строке №21;



в строке №26 командой complete завершается текущий параграф.


4.4.4.3.

add (ADDition)

Сложение

ܽ
݀
݀

ܣ

ܩ
1,
ܣ

ܩ
2

Назначение: операци
я сложения двух аргументов

Синтаксис
:


Рис.18


Синтаксическое описание команды
ad
d

Наличие результата: да

Алгоритм работы:



выполнить сложение
ܣ

ܩ
1 +
ܣ

ܩ
2;



установить флаги;



поместить результат вместе с флагами в коммутатор;

Состояние флагов р
езультата после выполнения команды
:





© ОАО «Мультиклет
» 2012
v
.0.1.
56
-
154


Применение: команда add используется для сложения двух операндов, значение которых
интерпретируется согласно типу операции.


Пояснения к примеру



в строке №1 директивой ассемблера .data устанавл
ивается текущая секци
я
ассембли
рования


секция инициализированных данных data;



в строке №3 объявляется символ (идентификатор)
ܤ
,

который является меткой в
теку
щей секции ассемблирования (data), и инициализируется текущим значением
адреса

ассемблирования;



в строке №4 дире
ктивой ассемблера .float в те
кущую секцию ассемблирования
за
писывается четыре 32
-
х рарядных вещественных числа, начиная с текущего адреса
ассемблирования (символ обратной косой черты
\

в конце строки используется для продолжения
строки, т. е. строки №№4,5,
6 логически являются одной строкой);



в строке №8 директивой ассемблера .text устанавл
ивается текущая секция
ассембли
рования


секция исполняемых инструкций text;



в строке №10 объявляется символ (идентификатор)
ܣ
, который является меткой в



© ОАО «Мультиклет
» 2012
v
.0.1.
57
-
154


те
кущей секц
ии ассемблирования (text), и инициализ
ируется текущим значением адре
са
ассемблирования, а также начинает новый параграф;



в строках №№11,12 командами rdq, читаются из памяти данных два 64
-
х разрядных
целых беззнаковых числа по адресам
ܤ

и
ܤ

+ 8 со
ответс
твенно и помещаются в ком
мутатор;



в строке №13 командой addc выполняется операц
ия сложения результатов выполне
ния
двух предшествующих команд: @1


результат выполнения команды чтения в строке №11, @2


результат выполнения команд
ы чтения в строке №12; об
а аргу
мента команды addc согласно
суффиксу c интерпретируются как комплексные числа размерностью 64 бита, старшие 32
разряда которых представляют действительные части чисел, а младшие 32 разряда


мнимые;
результат выполнения команды также интерпретируются

как 64
-
х разрядное комплексное число
и помещается в комутатор;



в строке №14 командой wrq осуществляется запись в память данных по адресу
ܤ

+

16
результата выполнения предшествующей команды: @1


результат выполнения

команды
сложения в строке №13;



в с
троке №15 командой complete завершается текущий параграф.


4.4.4.4.

and (AND)

Логического умножение

ܽ
݊
݀

ܣ

ܩ
1 ,
ܣ

ܩ
2

Назначение: операция логического умножения двух аргументов

Синтаксис:


Рис.1
9



Синтаксическое описание команды
and




© ОАО «Мультиклет
» 2012
v
.0.1.
58
-
154



Наличие результата: да

Алгоритм работы:



выполнить логическое умножение
ܣ

ܩ
1 &
ܣ

ܩ
2;



установить флаги;



поместить результат вместе с флагами в коммутатор;

Состояние флагов результата после выполнения команды:



4.4.4.5.

cfsl (Convert Float to Signed Long)


Преобразование типа

ܿ
݂
ݏ
݈

ܣ

ܩ

Назначение: операция преобразования типа

Синтаксис:



Рис.
20



Синтаксическое описание команды
cf

sl

Наличие результата: да

Алгоритм работы:



выполнить округление вещественного числа одинарной точности, заданного аргумен
-

том
ARG
2, до бли
жайшего целого;




© ОАО «Мультиклет
» 2012
v
.0.1.
59
-
154




выполнить преобразование округлённого вещественного числа одинарной точности в

знаковое 32
-
х разрядное целое число;



установить флаги;



поместить результат вместе с флагами в коммутатор;

Состояние флагов результата после выполнения кома
нды:


Применение: команда cfsl используется для преобразования с предварительным
округлением до ближайш
е
го целого значения операнда, интерпретируемого как вещественное

число одинарной точности, к знаковому целому 32
-
х разрядному числу.


Пояснения к приме
ру



в строке №1 директивой ассемблера .text устанавл
ивается текущая секция ассембли
рования


секция исполняемых инструкций text;



в строке №3 объявляется символ (идентификатор)
ܣ
,

который является меткой в теку
щей
секции ассемблирования (text), и инициа
лизируется текущим значением
адреса

ассемблирования, а также начинает новый параграф;



в строке №4 командой cfsl выполняется операция преобразования с предварительным
округлением до ближайшего целого вещественного числа одинарной точности 13.94 к целому
з
наковому 32
-
х разрядному числу (результат выполнения операция


14);



в строке №5 командой wrl в память данных по адресу 0
записывается значение резуль
тата
выполнения предшествующей команды: @1


результат выполнения команды

преобразования
типа в строке №
4;



в строке №6 командой complete завершается текущий параграф.




© ОАО «Мультиклет
» 2012
v
.0.1.
60
-
154



4.4.4.6.

clf (Convert Long to Float)






© ОАО «Мультиклет
» 2012
v
.0.1.
61
-
154






© ОАО «Мультиклет
» 2012
v
.0.1.
62
-
154



4.4.4.7.

cslf (Convert Signed Long to Float)





© ОАО «Мультиклет
» 2012
v
.0.1.
63
-
154






© ОАО «Мультиклет
» 2012
v
.0.1.
64
-
154



4.4.4.8.

div (DIVide)





© ОАО «Мультиклет
» 2012
v
.0.1.
65
-
154






© ОАО «Мультиклет
» 2012
v
.0.1.
66
-
154







© ОАО «Мультиклет
» 2012
v
.0.1.
67
-
154



4.4.4.9.

exa (EXacutive Address)





© ОАО «Мультиклет
» 2012
v
.0.1.
68
-
154






© ОАО «Мультиклет
» 2012
v
.0.1.
69
-
154






© ОАО «Мультиклет
» 2012
v
.0.1.
70
-
154






© ОАО «Мультиклет
» 2012
v
.0.1.
71
-
154






© ОАО «Мультиклет
» 2012
v
.0.1.
72
-
154






© ОАО «Мультиклет
» 2012
v
.0.1.
73
-
154






© ОАО «Мультиклет
» 2012
v
.0.1.
74
-
154



4.4.4.10.

get (GET value)





© ОАО «Мультиклет
» 2012
v
.0.1.
75
-
154






© ОАО «Мультиклет
» 2012
v
.0.1.
76
-
154






© ОАО «Мультиклет
» 2012
v
.0.1.
77
-
154



4.4.4.11.

insub (INversion SUB
tract)





© ОАО «Мультиклет
» 2012
v
.0.1.
78
-
154






© ОАО «Мультиклет
» 2012
v
.0.1.
79
-
154






© ОАО «Мультиклет
» 2012
v
.0.1.
80
-
154



4.4.4.12.

ja (Jump if Above)





© ОАО «Мультиклет
» 2012
v
.0.1.
81
-
154



4.4.4.13.

jae (Jump if Above and Equal) / jnc (Jump if Carry flag unset)






© ОАО «Мультиклет
» 2012
v
.0.1.
82
-
154



4.4.4.14.






© ОАО «Мультиклет
» 2012
v
.0.1.
83
-
154



4.4.4.15.

jbe (Jump if Below and Equal)






© ОАО «Мультиклет
» 2012
v
.0.1.
84
-
154



4.4.4.16.

je (Jump if Equal)





© ОАО «Мультиклет
» 2012
v
.0.1.
85
-
154



4.4.4.17.

jg (Jump if Greater)





© ОАО «Мультиклет
» 2012
v
.0.1.
86
-
154



4.4.4.18.

jge (Jump if Greate
r and Equal)





© ОАО «Мультиклет
» 2012
v
.0.1.
87
-
154



4.4.4.19.

jl (Jump if Less)





© ОАО «Мультиклет
» 2012
v
.0.1.
88
-
154



4.4.4.20.

jle (Jump if Less and Equal)






© ОАО «Мультиклет
» 2012
v
.0.1.
89
-
154



4.4.4.21.

jmp (unconditional JuMP)





© ОАО «Мультиклет
» 2012
v
.0.1.
90
-
154



4.4.4.22.

jne (Jump if Not Equal)





© ОАО «Мультиклет
» 2012
v
.0.1.
91
-
154



4.4.4.23.

jno (Jump if Overflow flag unset)





© ОАО «Мультиклет
» 2012
v
.0.1.
92
-
154



4.4.4.24.

jns (Jump if Sign flag unset)





© ОАО «Мультиклет
» 2012
v
.0.1.
93
-
154



4.4.4.25.

jo (Jump if Overflow flag set)





© ОАО «Мультиклет
» 2012
v
.0.1.
94
-
154



4.4.4.26.






© ОАО «Мультиклет
» 2012
v
.0.1.
95
-
154



4.4.4.27.

madd (Multiplication with ADDition of packed arguments)






© ОАО «Мультиклет
» 2012
v
.0.1.
96
-
154



4.4.4.28.

max (MAXimum)






© ОАО «Мультиклет
» 2012
v
.0.1.
97
-
154



4.4.4.29.

min (MINimum)







© ОАО «Мультиклет
» 2012
v
.0.1.
98
-
154



4.4.4.30.

mul (MULtiply)





© ОАО «Мультиклет
» 2012
v
.0.1.
99
-
154






© ОАО «Мультиклет
» 2012
v
.0.1.
100
-
154






© ОАО «Мультиклет
» 2012
v
.0.1.
101
-
154



4.4.4.31.

norm (NORmalization)






© ОАО «Мультиклет
» 2012
v
.0.1.
102
-
154



4.4.4.32.

not (NOT)







© ОАО «Мультиклет
» 2012
v
.0.1.
103
-
154



4.4.4.33.

or (OR)






© ОАО «Мультиклет
» 2012
v
.0.1.
104
-
154



4.4.4.34.

pack (PACK)






© ОАО «Мультиклет
» 2012
v
.0.1.
105
-
154



4.4.4.35.

patch (PATCH)







© ОАО «Мультиклет
» 2012
v
.0.1.
106
-
154



4.4.4.36.

rd (ReaD)





© ОАО «Мультиклет
» 2012
v
.0.1.
107
-
154






© ОАО «Мультиклет
» 2012
v
.0.1.
108
-
154






© ОАО «Мультиклет
» 2012
v
.0.1.
109
-
154






© ОАО «Мультиклет
» 2012
v
.0.1.
110
-
154



4.4.4.37.

rol (ROtate Lef
t)





© ОАО «Мультиклет
» 2012
v
.0.1.
111
-
154



4.4.4.38.

ror (ROtate Right)





© ОАО «Мультиклет
» 2012
v
.0.1.
112
-
154



4.4.4.39.

sar (Shift Arithmetic Right)





© ОАО «Мультиклет
» 2012
v
.0.1.
113
-
154



4.4.4.40.

sbb (SuBtract with Barrow (Carry Flag))







© ОАО «Мультиклет
» 2012
v
.0.1.
114
-
154



4.4.4.41.

set (SET)





© ОАО «Мультиклет
» 2012
v
.0.1.
115
-
154






© ОАО «Мультиклет
» 2012
v
.0.1.
116
-
154






© ОАО «Мультиклет
» 2012
v
.0.1.
117
-
154






© ОАО «Мультиклет
» 2012
v
.0.1.
118
-
154






© ОАО «Мультиклет
» 2012
v
.0.1.
119
-
154






© ОАО «Мультиклет
» 2012
v
.0.1.
120
-
154



4.4.4.42.

sll (Shift Logical Left) / sal (Shift Arithmetic Left)





© ОАО «Мультиклет
» 2012
v
.0.1.
121
-
154



4.4.4.43.

slr (Shift Logical Right)





© ОАО «Мультиклет
» 2012
v
.0.1.
122
-
154



4.4.4.44.

sqrt (SQuare RooT)






© ОАО «Мультиклет
» 2012
v
.0.1.
123
-
154



4.4.4.45.

sub (SUBtra
ct)





© ОАО «Мультиклет
» 2012
v
.0.1.
124
-
154






© ОАО «Мультиклет
» 2012
v
.0.1.
125
-
154






© ОАО «Мультиклет
» 2012
v
.0.1.
126
-
154



4.4.4.46.

wr (WRite)





© ОАО «Мультиклет
» 2012
v
.0.1.
127
-
154






© ОАО «Мультиклет
» 2012
v
.0.1.
128
-
154






© ОАО «Мультиклет
» 2012
v
.0.1.
129
-
154



4.4.4.47.

xor (XOR)





© ОАО «Мультиклет
» 2012
v
.0.1.
130
-
154



4.5.

Система директив ассемблера



4.5.1.

.alias name value



4.5.2.

.align abs_expr, abs_expr, abs_expr





© ОАО «Мультиклет
» 2012
v
.0.1.
131
-
154




4.5.3.

.ascii “string” . . .




4.5.4.

.asciiz “string” . . .






© ОАО «Мультиклет
» 2012
v
.0.1.
132
-
154



4.5.5.

.bss subsection



4.5.6.

.byte expressions




4.5.7.

.comm symbol, length, align





© ОАО «Мультиклет
» 2012
v
.0.1.
1
33
-
154



4.5.8.

.data subsection



4.5.9.

.else



4.5.10.

.elseif



4.5.11.

.end



4.5.12.

.endif






© ОАО «Мультиклет
» 2012
v
.0.1.
134
-
154



4.5.13.

.equ symbol, expression




4.5.14.

.equiv symbol, expression




4.5.15.

.eqv symbol, expression




4.5.16.

.err




4.5.17.

.error “string”






© ОАО «Мультиклет
» 2012
v
.0.1.
135
-
154



4.5.18.

.fill repeat, size, value




4.5.19.

.float flonums




4.5.20.

.global names, .globl names





© ОАО «Мультиклет
» 2012
v
.0.1.
136
-
154



4.5.21.

.if abso
lute_expression






© ОАО «Мультиклет
» 2012
v
.0.1.
137
-
154




4.5.22.

.include “file”






© ОАО «Мультиклет
» 2012
v
.0.1.
138
-
154



4.5.23.

.lcomm symbol, length




4.5.24.

.local names




4.5.25.

.long expressions



4.5.26.

.p2align abs_expr, abs_expr, abs_expr





© ОАО «Мультиклет
» 2012
v
.0.1.
139
-
154




4.5.27.

.print string





© ОАО «Мультиклет
» 2012
v
.0.1.
140
-
154



4.5.28.

.quad expressions




4.5.29.

.rept count



4.5.30.




4.5.31.

.short expressions





© ОАО «Мультиклет
» 2012
v
.0.1.
141
-
154




4.5.32.

.single f
lonums



4.5.33.

.size name, expression




4.5.34.

.skip size, fill







© ОАО «Мультиклет
» 2012
v
.0.1.
142
-
154



4.5.35.

.space size, fill





4.5.36.

.string “str”





© ОАО «Мультиклет
» 2012
v
.0.1.
143
-
154





4.5.37.

.text subsection







© ОАО «Мультиклет
» 2012
v
.0.1.
144
-
154



4.5.38.

.type name, type





4.5.39.

.warning “string”





4.5.40.

.weak names






© ОАО «Мультиклет
» 2012
v
.0.1.
145
-
154



4.6.

Принципы программирования на ассемблере для мультиклеточного
процессора






© ОАО «Мультиклет
» 2012
v
.0.1.
146
-
154






© ОАО «Мультиклет
» 2012
v
.0.1.
147
-
154






© ОАО «Мультиклет
» 2012
v
.0.1.
148
-
154






© ОАО «Мультиклет
» 2012
v
.0.1.
149
-
154



4.7.

Прерывания и их обработка

Система прерываний мультиклеточного процессора допускает обработку 32 прерываний.





© ОАО «Мультиклет
» 2012
v
.0.1.
150
-
154







© ОАО «Мультиклет
» 2012
v
.0.1.
151
-
154






© ОАО «Мультиклет
» 2012
v
.0.1.
152
-
154



5.

РУКОВОДСТВО ПОЛЬЗОВАТЕЛЯ ПО
РЕДАКТОРУ СВЯЗЕЙ


5.1.

Общие сведения о редакторе связей

Компоновщик или редактор связей для мультиклеточн
ого процессора осуществляет
сборку образа исполняемой программы путём объединения данных одного или нескольких
объектных файлов и, в случае необходимости, объектных файлов статических библиотек, а
также

связывание символов объектных файлов, так чтобы все с
сылки на эти символы имели
верные

адреса времени выполнения.

Объектные файлы
представляют собой результат ко
мпиляции ассемблером исходного

кода программы.

Статические библиотеки представляют собой обычные архивы объектных файлов, для

создания которых испол
ьзуется команда ar.


5.2.

Использование редактора связей

Представленный редактор связей запускается из командной строки командой ld,
аргументами которой являются один или несколько объектных файлов. Поддерживаются также

следующие опции:

-
L
,
--
library=namespec


добавить файл архива namespec к списку файлов, используемых
для сборки. Данная опция может использоваться многократно. Редактор связей будет искать
путь к библиотеке для имени файла libnamespec.a. Поиск архивного файла осуществляется
редактором связей толь
ко один раз, в том месте, где он указан в командной строке. Если в
архиве определяется символ, который был неопределённым в каком
-
либо объектном файле и
этот объектный файл указан в командной строке до файла архива, компоновщик добавит в
результирующий фай
л образа соответствующие объектные файлы архива. В тоже время,
наличие неопределённого символа в каком
-
либо объектном файле, указанного в командной
строке после файла архива, не приведёт к повторному поиску символа в ранее указанном
архивном файле. Любой а
рхивный файл може быть указан в камандной строке несколько раз.

-
L,
-

-
library
-
path=searchdir


добавить путь searchdir в список путей, в которых редактор
связей будет искать статические библиотеки (архивные файлы, задаваемые опцией
-
l). Данная
опция может

использоваться многократно. Директории используются в том порядке, в котором
они указаны в коммандной строке. Все значения опции
-
L применяются ко всем значениям
опции
-
l, независимо от того, в каком порядке эти опции указаны.

-
e,
--
entry=entry_point


ис
пользовать значение символа entry_point в качестве



© ОАО «Мультиклет
» 2012
v
.0.1.
153
-
154


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

-
o,
-
-
output=FILE


поместить вывод в файл образа FILE. Если данная опция не
используется, то имя выходного файла по умолчанию


image.bin.

-
M,
-
-
print
-
map


вывести в стандартный поток вывода и
нформацию о размещении
данных объектных файлов в памти и значениях, назначенных символам.

-
h,
-
-
help


показать это сообщение и выйти.




© ОАО «Мультиклет
» 2012
v
.0.1.
154
-
154



6.

РУКОВОДСТВО ПОЛЬЗОВАТЕЛЯ ПО ЗАГРУЗЧИКУ


6.1.

Общие сведения о загрузчике

Программный загрузчик для мультиклеточного процессора осуществляет загрузку
образов памяти исполняемой программы

в ПЗУ отладочной платы.

Файл образов памяти исполняемой программы представляет собой результат сборки
программы редактором связей: файл образо
в

памяти программ и памяти данных исполняемой
программы.



6.2.

Использование загрузчика


Программный загрузчик запускается из командной строки командой ploader, аргументом
которой

является файл образов памяти исполняемой программы.

Поддерживаются также
следующие о
пции:



-
l,
--
list
-

показать список доступных ftdi устройств.


-
d,
--
device=deviceName
-

установить имя ftdi устройства в deviceName, используемого
для загрузки.


-
f,
--
frequency=frequencyValue
-

установить частоту ftdi устройства в frequencyValue,
испо
льзуемого для загрузки (значение по умолчанию 10000 кГц).


-
h,
--
help
-

показать это сообщение и выйти.


Предположим, что image.bin является файлом образов памяти исполняемой программы.
Тогда для загрузки этого образа в ПЗУ

отладочной платы необходимо в к
омандной строке
выполнить следующую команду:


ploader image.bin

В этом случае будет использовано первое найденное подходящее ftdi устройство для
загрузки файла image.bin в ПЗУ

отладочной платы с частотой 10000 кГц.

Для использования конкретного ftdi устро
йства с заданной частатой может быть
использована следующая команда:


ploader image.bin
-
d"PicoTAP A"
-
f20000



Приложенные файлы

  • pdf 9243069
    Размер файла: 4 MB Загрузок: 0

Добавить комментарий