HLA

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до: навігація, пошук

HLA (англ. «High Level Assembl/y/er» — Асе́мблер високого рівня) — мова програмування низького рівня, створена Рендаллем Гайдом. Але з використанням конструкцій таких як IF, WHILE, FOR та ін., запозичених у високорівневих мов програмування (Pascal, Ada і C++). Спочатку розроблявся як інструмент для вивчення мов асемблера у коледжах та університетах. З метою використовувати існуючі знання учнів в інших мовах програмування, щоб максимально швидко навчити низькорівневим конструкціям.

Порівняння високорівневого і низькорівневого асемблера[ред.ред. код]

HLA v2.x підтримує такі самі низькорівневі інструкції як і низькорівневий асемблер. Різниця полягає в тому, що високорівневі асемблери (такі як HLA, MASM, чи TASM на x86) додатково підтримують такі конструкції, як IF, WHILE, FOR, структури, унії і навіть класи.

Компілятор HLA включає в себе стандартну бібліотеку: функції, процедури і макроси, які дають можливість зменшити час на розробку програми.

Приклади програм[ред.ред. код]

Компіляція програм:[ред.ред. код]
  • Встановити компілятор HLA.
  • Відкрити командну строку (Від імені адміністратора і перейти в дирикторію розташування <fileName>.hla).
  • hla <fileName>.hla — компіляція.
  • ./<fileName>.exe — запуск.

«Привіт, світ!»[ред.ред. код]

program Hello;
#include("stdlib.hhf");

begin Hello;
stdout.put("Hello, World!");
end Hello;

Цикл for[ред.ред. код]

program For;
#include("stdlib.hhf");
static
    i: int8;
begin For;

for( mov( 0, i); i < 10; inc(i) ) do
    stdout.put( i, nl);     // nl - новий рядок
endfor;

end For;

Матриця[ред.ред. код]

program Array;
#include("stdlib.hhf");
static
    i: int32;
    j: int32;
    twoD: int32[8,4]:=[1,2,3,4,5,6,7,8,9,10,11,12,
                    13,14,15,16,17,18,19,20,21,22, 
                    23,24,25,26,27,28,29,30,31,32];
    // 4 - рядки, 8 - стовпці 
    
begin Array;
// Програма бере від користувача номер рядка та стовпця 
// та виводить на екран значення з  матриці twoD
stdout.put("Прошу подати i: ");
stdin.get(i);
stdout.put("Прошу подати j: ");
stdin.get(j);

mov(i,ebx);
shl(3,ebx); // shift left - зсування бітів на 3 знаки вліво
add(j,ebx);
stdout.put( поданих пунктах i, j, значення = ");
stdout.put(twoD[ebx*4]);

end Array;

Посилання[ред.ред. код]