Vai al contenuto

Utente:Fede255/ELLA: differenze tra le versioni

Da Wikipedia, l'enciclopedia libera.
Contenuto cancellato Contenuto aggiunto
Creata dalla traduzione della pagina "ELLA (programming language)"
(Nessuna differenza)

Versione delle 01:34, 2 dic 2024

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, che ha anche sviluppato il compilatore per il linguaggio di programmazione ALGOL 68RS, utilizzato per scrivere ELLA.

ELLA fornisce strumenti per eseguire:

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

Riferimenti

Collegamenti esterni

[[Categoria:Linguaggi di descrizione hardware]]