Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
Imager::Expr::Assem(3)User Contributed Perl DocumentatioImager::Expr::Assem(3)

NAME
	 Imager::Expr::Assem - an assembler for	producing code for the Imager
	 register machine

SYNOPSIS
	 use Imager::Expr::Assem;
	 my $expr = Imager::Expr->new(assem=>'...', ...)

DESCRIPTION
       This module is a	simple Imager::Expr compiler that compiles a low-level
       language	that has a nearly 1-to-1 relationship to the internal
       representation used for compiled	register machine code.

   Syntax
       Each line can contain multiple statements separated by semi-colons.

       Anything	after '#' in a line is ignored.

       Types of	statements:

       variable	definition
	       "var" name:type

	   defines variable name to have type, which can be any	of "n" or
	   "num" for a numeric type or "pixel",	"p" or "c" for a pixel or
	   color type.

	   Variable names cannot include white-space.

       operators
	   Operators can be split into 3 basic types, those that have a	result
	   value, those	that don't and the null	operator, eg. jump has no
	   value.

	   The format for operators that return	a value	is typically:

	       result =	operator operand ...

	   and for those that don't return a value:

	       operator	operand

	   where operator is any valid register	machine	operator, result is
	   any variable	defined	with "var", and	operands are variables,
	   constants or	literals, or for jump operators, labels.

	   The set operator can	be simplified to:

	       result =	operator

	   All operators maybe preceded	by a label, which is any non-white-
	   space text immediately followed by a	colon (':').

BUGS
       Note that the current optimizer may produce incorrect optimization for
       your code, fortunately the optimizer will disable itself	if you include
       any jump	operator in your code.	A single jump to anywhere after	your
       final "ret" operator can	be used	to disable the optimizer without
       slowing down your code.

       There's currently no high-level code generation that can	generate code
       with loops or real conditions.

SEE ALSO
       Imager(3), transform.perl, regmach.c

AUTHOR
       Tony Cook <tony@develop-help.com>

perl v5.32.1			  2020-06-13		Imager::Expr::Assem(3)

NAME | SYNOPSIS | DESCRIPTION | BUGS | SEE ALSO | AUTHOR

Want to link to this manual page? Use this URL:
<https://www.freebsd.org/cgi/man.cgi?query=Imager::Expr::Assem&sektion=3&manpath=FreeBSD+13.0-RELEASE+and+Ports>

home | help