Marius Gavrilescu

NAME

App::Scheme79asm::Compiler - compile Lisp code to SIMPLE assembly

SYNOPSIS

  use App::Scheme79asm;
  use App::Scheme79asm::Compiler;
  use Data::SExpression qw/cons/;

  my $asm = App::Scheme79asm->new;
  my $compiler = App::Scheme79asm::Compiler->new;
  my $string = '(reverse-list 2 1)';
  my $assembly_sexp = $compiler->compile_string($string);
  $asm->process($assembly_sexp);
  $asm->finish;
  $asm->print_verilog

DESCRIPTION

This module takes Lisp code and compiles it to the format that App::Scheme79asm wants it to be.

The two main methods are compile_sexp($sexp) which compiles an already-parsed sexp to assembly format, and compile_string($string) which compiles a string to assembly format.

The assembly format is a sexp. These functions return an already-parsed sexp (an arrayref like the ones returned by Data::SExpression's read method). This arrayref can be passed directly to App::Scheme79asm's process method.

If a string representation of the sexp is required, it can be obtained by calling the dump_sexp function in Data::Dump::Sexp with such an arrayref.

AUTHOR

Marius Gavrilescu, <marius@ieval.ro>

COPYRIGHT AND LICENSE

Copyright (C) 2018 by Marius Gavrilescu

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.24.3 or, at your option, any later version of Perl 5 you may have available.