ELLA è un linguaggio di descrizione hardware e un set di strumenti di supporto, sviluppato nel Regno Unito dal Royal Signals and Radar Establishment (RSRE) durante gli anni '80 e '90 del 900. RSRE ha sviluppato anche il compilatore per il linguaggio di programmazione ALGOL 68RS, utilizzato per sviluppare ELLA.

ELLA adotta un approccio alla modellazione dell'hardware di tipo strutturale e fornisce strumenti per eseguire trasformazioni di programma, simulazione, sintesi e verifica formale.

ELLA ha vinto il Queen's Award for Technological Achievement nel 1989.

Esempio

Codice per la verifica della descrizione hardware per un moltiplicatore di matrici:

MAC ZIP = ([INT n]TYPE t: vector1 vector2) -> [n][2]t:
 [INT k = 1..n](vector1[k], vector2[k]).
MAC TRANSPOSE = ([INT n][INT m]TYPE t: matrix) -> [m][n]t:
 [INT i = 1..m] [INT j = 1..n] matrix[j][i].

MAC INNER_PRODUCT{FN * = [2]TYPE t -> TYPE s, FN   = [2]s -> s}
         = ([INT n][2]t: vector) -> s:
 IF n = 1 THEN *vector[1]
 ELSE *vector[1]   INNER_PRODUCT {*, } vector[2..n]
 FI.

MAC MATRIX_MULT {FN * = [2]TYPE t->TYPE s, FN   = [2]s->s} =
([INT n][INT m]t: matrix1, [m][INT p]t: matrix2) -> [n][p]s:
BEGIN
 LET transposed_matrix2 = TRANSPOSE matrix2.
OUTPUT [INT i = 1..n][INT j = 1..p]
    INNER_PRODUCT{*, }ZIP(matrix1[i],transposed_matrix2[j])
END.

TYPE element = NEW elt/(1..20),
   product = NEW prd/(1..1200).

FN PLUS = (product: integer1 integer2) -> product:
 ARITH integer1   integer2.

FN MULT = (element: integer1 integer2) -> product:
 ARITH integer1 * integer2.

FN MULT_234 = ([2][3]element:matrix1, [3][4]element:matrix2) ->
       [2][4]product: 
 MATRIX_MULT{MULT,PLUS}(matrix1, matrix2).

FN TEST = () -> [2][4]product:
( LET m1 = ((elt/2, elt/1, elt/1),
      (elt/3, elt/6, elt/9)), 
   m2 = ((elt/6, elt/1, elt/3, elt/4), 
      (elt/9, elt/2, elt/8, elt/3),
      (elt/6, elt/4, elt/1, elt/2)).
 OUTPUT
  MULT_234 (m1, m2)
).

COM test: just displaysignal MOC

Note

Collegamenti esterni

  • Codice sorgente ELLA incluso il traduttore ALGOL 68RS. Archiviato il 18 novembre 2009 in Internet Archive.

Classe virtuale di

Linguaggi Di Programmazione Illustrazione Vettoriale Illustrazione di

3. Linguaggi di programmazione Linguaggi di programmazione Premessa

Programmazione in C Capitoli su come programmare in C

Linguaggio di programmazione Okpedia