ARM.hrc
Главная     ◄Глагол     ◄Азбука     ◄Задачи на Глаголе     Примеры приложений ►   Среда разработки ►   Отладка программ ►   Отличия от Оберона ►   Отличия от Паскаля ►   Ассемблер ARM ►   Глагол для ARM ►   ? и Ответы
 
 glagol.png Программируем по-русски
 

Основная задача Глагола — дать человеку возможность воплощать свои мысли на языке, близком к его родному языку.

Издатель Глагола
 

"Far Manager\Plugins\FarColorer\base\hrc\ARM.hrc" - расцветка кода на ARM-ассемблере
 

<?xml version="1.0" encoding="windows-1251"?>
<!DOCTYPE hrc PUBLIC
 "-//Cail Lomecb//DTD Colorer HRC take5//EN"
 "http://colorer.sf.net/2003/hrc.dtd"
>
<hrc version="take5"
 xmlns="http://colorer.sf.net/2003/hrc"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://colorer.sf.net/2003/hrc
                        http://colorer.sf.net/2003/hrc.xsd"
>
   <type name="ARM">

    <annotation> 
     <documentation>ARM ассемблер.</documentation>
     <contributors><![CDATA[http://glagol.nad.ru]]></contributors>
    </annotation>

    <region name="Текст"     parent="def:Text"/>
    <region name="Слово"     parent="def:Keyword"/>
    <region name="Регистр"   parent="def:Register"/>
    <region name="Метка"     parent="def:Label"/>
    <region name="Число10"   parent="def:NumberDec"/>
    <region name="Число16"   parent="def:NumberHex"/>
    <region name="Число2"    parent="def:NumberBin"/>
    <region name="Цепочка"   parent="def:String"/>
    <region name="Пояснение" parent="def:Comment"/>
    <region name="Установка" parent="def:Directive"/>
    <region name="НачПары"   parent="def:PairStart"/>
    <region name="КонПары"   parent="def:PairEnd"/>
    <!-- Для поиска объявлений задач -->
    <region name="Задача"    parent="def:Function"/> 

    <!-- Операции -->
    <entity name="ОП1"
 value="(bl|b|add|adc|sub|sbc|and|eor|rsb|tst|cmp|
         orr|mov|bic|mvn|mul|mla|ldr|str|ldm|stm)"/>
    <!-- Передача данных -->
    <entity name="ОП2"
 value="(ia|ib|da|db|fd|ed|fa|ea)"/>
    <!-- Условия -->
    <entity name="ОП3"
 value="(eq|ne|cs|hs|cc|lo|mi|pl|vs|vc|hi|ls|ge|lt|gt|le|al|nv)"/>
    <!-- Обновление флагов -->
    <entity name="ОП4"
 value="(s)"/>
    <!-- Размер данных -->
    <entity name="ОП5"
 value="(h|b)"/>

    <scheme name="ARM">
      <regexp match="/\;.*$/"                region0="Пояснение"/>
      <regexp match="/".*?"/"                region0="Цепочка"/>
      <regexp match="/^\M(\S+)\s+proc\b/i" region1="Задача"/>
      <regexp match="/\|.*?\|/"             region0="Метка"/>
      <regexp match="/\b\d+\b/"             region0="Число10"/>
      <regexp match="/\&[0-9a-fA-F]+\b/"   region0="Число16"/>
      <regexp match="/\b0x[0-9a-fA-F]+\b/" region0="Число16"/>
      <regexp match="/2_[01]+\b/"           region0="Число2"/>
      <block start="/(\[)/" end="/(\])/" scheme="ARM"
 region00="Текст" region01="НачПары" region10="Текст" region11="КонПары"/>
      <block start="/(\{)/" end="/(\})/" scheme="ARM"
 region00="Текст" region01="НачПары" region10="Текст" region11="КонПары"/>
      <!-- Служебные установки -->
      <keywords ignorecase="yes" region="Установка">
        <word name="area"/>
        <word name=".text"   region="Текст"/>
        <word name=".bss"    region="Текст"/>
        <word name="code"/>
        <word name="readonly"/>
        <word name="data"/>
        <word name="noinit"/>
        <word name="dcb"/>
        <word name="dcw"/>
        <word name="dcd"/>
        <word name="^"/>
        <word name="#"/>
        <word name="end"/>
        <word name="endp"/>
        <word name="org"/>
        <word name="ltorg"/>
        <word name="keep"/>
        <word name="import"/>
        <word name="export"/>
        <word name="func"/>
        <word name="proc"/>
        <word name="include"/>
        <word name="assert"/>
        <word name="info"/>
        <word name="ttl"/>
        <word name="subt"/>
        <word name="align"/>
        <word name="equ"/>
      </keywords>
      <!-- Дополнительный сдвиг данных -->
      <keywords ignorecase="yes" region="Текст">
        <word name="lsl"/>
        <word name="lsr"/>
        <word name="asr"/>
        <word name="ror"/>
        <word name="rrx"/>
      </keywords>
      <!-- Регистры -->
      <keywords ignorecase="yes" region="Регистр">
        <word name="r0"/>
        <word name="r1"/>
        <word name="r2"/>
        <word name="r3"/>
        <word name="r4"/>
        <word name="r5"/>
        <word name="r6"/>
        <word name="r7"/>
        <word name="r8"/>
        <word name="r9"/>
        <word name="r10"/>
        <word name="r11"/>
        <word name="r12"/>
        <word name="r13"/>
        <word name="r14"/>
        <word name="r15"/>
        <word name="pc"/>
        <word name="lr"/>
        <word name="sp"/>
        <word name="fp"/>
      </keywords>
      <!-- Ещё один вид меток -->
      <regexp match="/^\S+/" region0="Метка"/>
      <!-- Составная операция -->
      <regexp match="/\b(%ОП1;%ОП2;?%ОП3;?%ОП4;?%ОП5;?)\b/i" region0="Слово"/>
    </scheme>
  </type>
</hrc>
 
 

Вопросы, замечания и предложения высылайте на atimopheyev@yahoo.com