Imager...::Assem(3pm)

✨ NAME ✨

Okay so bestie, this is Imager...::Assem β€” the Imager...::Assem(3pm) page, from the User Contributed Perl Documentation. It's literally an assembler for producing code for the Imager register machine. No cap. πŸŽ€

🌸 SYNOPSIS 🌸

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

πŸ’… DESCRIPTION πŸ’…

This module is a simple Imager::Expr compiler, and what it does is compile a low-level language that has a nearly 1-to-1 relationship to the internal representation used for compiled register machine code. It's giving "close to the metal, but make it readable." πŸ¦‹

🧚 Syntax 🧚

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

Anything after '#' in a line is ignored. So comment away, bestie. πŸ’–

Types of statements:

  • variable definition β€” "var" name:type

This defines variable name to have type. The type 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. Periodt.

  • 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 (':'). Iykyk. 🌈

πŸ’€ 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. Sad but true. 😭

🌟 SEE ALSO 🌟

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

πŸ‘‘ AUTHOR πŸ‘‘

Tony Cook <tony@develop-help.com> πŸ’œ


That's the whole vibe, bestie! This page's source/version footer says perl v5.42.3, dated 2026-08-19, and it's the Imager...::Assem(3pm) manual page. Bye-ee! πŸ’…βœ¨

πŸ“¦ where this page comes from