Provided by: mawk_1.3.4.20240123-1build1_amd64 bug

NAME

       mawk-code - dumping mawk's byte-code

SYNOPSIS

       At  startup,  mawk  compiles  the  script  into  byte-code.  After that, it interprets the
       compiled byte-code.  Use the -Wdump option to show the byte-code.

PROGRAM CODES

       As mawk executes the program, it maintains a reference to the command to execute  in  cdp.
       After that there may be data and/or references in cdp[0], cdp[1], etc.

       When  an  operation requires operands, mawk pushes the values (or array/string references)
       onto the stack, which updates the stack pointer sp.  When the  operation  completes,  mawk
       consumes those entries on the stack, pushing the result (if any) onto the stack.

       While  executing  user-defined functions, mawk maintains a frame pointer fp to address the
       function's local variables.

   a_cat
       Concatenate array-indices.

       Usage:
            Forms a multiple array index by concatenating the elements of sp[1-cnt..0], with each
            element separated by SUBSEP.

       Parameters:

            cdp[0]
                 cnt, the number of elements to concatenate follows the command.

            sp[0]..sp[1-cnt]
                 hold reference to the elements to concatenate.
       Returns the index in sp[0].

   a_del
       Delete an array item.

       Usage:
            delete array[expr]

       Parameters:

            sp[0]
                 points to array

            sp[-1]
                 is an expr

   a_length
       Find the length of an array.

       Usage:
            length(array)

       Parameters:

            sp[0]
                 points to array.

       Returns the length of the array in sp[0].

   a_pusha
       Push array address onto stack.

       Usage:
            This is used to set up a calling argument for a function.

       Parameters:

            cdp[0]
                 array reference follows the command.

       Returns the array in sp[0].

   a_test
       Test if an expression is present in an array.

       Usage:
            (expression in array)

       Parameters:

            sp[0]
                 points to an array.

            sp[-1]
                 is an expression.

       Returns 1 in sp[0] if the expression is found, 0 otherwise.

   add
       Add two numbers.

       Usage:
            first + second

       Parameters:

            sp[0]
                 holds the second value.

            sp[-1]
                 holds the first value.

       Returns the sum in sp[0].

   add_asg
       Combined addition/assignment.

       Usage:
            target += source

       Parameters:

            sp[0]
                 is the source expression

            sp[-1]
                 points to the target

       Stores the sum in the target, leaving sp[0] pointing to the target.

   ae_pusha
       Push reference to array cell, given expression for its index.

       Usage:
            arrayname[expression]

       Parameters:

            cdp[0]
                 an array reference follows the command.

            sp[0]
                 has an expression, used for the index of a cell in the array.

       Returns a reference to the addressed cell in sp[0].

   ae_pushi
       Push contents of array cell, given expression for its index.

       Usage:
            arrayname[expression]

       Parameters:

            sp[0]
                 has an expression, used for the index of a cell in the array.

       Returns contents of the addressed cell in sp[0].

   aloop
       Update reference to next cell for array loop.

       Usage:
            for ( i in arrayname )  statement

       Parameters:

            none

       Mawk  maintains  a stack of array-loop state.  It updates the array/cell references in the
       current loop's state.

   assign
       Assigns a value.

       Usage:
            target = source

       Parameters:

            sp[0]
                 is the source expression

            sp[-1]
                 points to the target

            Stores the sum in the target, leaving sp[0] pointing to the target.

   atan2
       Compute arc-tangent of two values.

       Usage:
            atan2( first, second )

       Parameters:

            sp[0]
                 holds the second value

            sp[-1]
                 holds the first value

       Returns the result in sp[0].

   call
       Call a function.

       Usage:
            function()

       Parameters:

            cdp[0]
                 is a reference to the function block

            cdp[1]
                 holds number of input arguments

       Returns function value in sp[0].

   cat
       Concatenate two strings.

       Usage:
            first second

       Parameters:

            sp[0]
                 is the second string.

            sp[-1]
                 is the first string.

       Returns the result in sp[0].

   close
       Close the file or pipe associated with an expression.

       Usage:
            close( expression )

       Parameters:

            sp[0]
                 holds the expression identifying the file to close

       Returns the status from closing the file, 0 on success or -1 on failure.

   cos
       Compute the cosine of a value in radians.

       Usage:
            cos( value )

       Parameters:

            sp[0]
                 is the value.

       Returns the result in sp[0].

   del_a
       Delete an array.

       Usage:
            delete(array)

       Parameters:

            sp[0]
                 is the array to delete.

   div
       Divide one number by another.

       Usage:
            first / second

       Parameters:

            sp[0]
                 is the second value.

            sp[-1]
                 is the first value.

       Returns the quotient in sp[0].

   div_asg
       Combined division/assignment.

       Usage:
            target /= source

       Parameters:

            sp[0]
                 is the source

            sp[-1]
                 points to the target

       Stores the quotient in the target, leaving sp[0] pointing to the target.

   eq
       Compare two values.

       Usage:
            first == second

       Parameters:

            sp[0]
                 is the second value

            sp[-1]
                 is the first value

       Returns 1 in sp[0] if the values are equal, otherwise 0.

   exit
       Exits mawk with a specific exit-code.

       Usage:
            exit(exit_code)

       Parameters:

            sp[0]
                 is the exit_code

   exit0
       Exits mawk with success

       Usage:
            exit

       Parameters:
            none

   exp
       Compute base-e exponential function of a value.

       Usage:
            exp( value )

       Parameters:

            sp[0]
                 is the value

       Returns the result in sp[0].

   f_add_asg
       Combination addition/assignment to NF.

       Usage:
            NF += expression

       Parameters:

            sp[0]
                 is the expression to add

   f_assign
       Assign an expression to NF.

       Usage:
            NF = expression

       Parameters:

            sp[0]
                 is the expression

   f_div_asg
       Combination division/assignment to NF.

       Usage:
            NF /= expression

       Parameters:

            sp[0]
                 is the expression

   f_mod_asg
       Combination modulus/assignment to NF.

       Usage:
            NF %= expression

       Parameters:

            sp[0]
                 is the expression

   f_mul_asg
       Combination multiplication/assignment to NF.

       Usage:
            NF *= expression

       Parameters:

            sp[0]
                 is the expression

   f_post_dec
       Post-decrement using NF.

       Usage:

            NF--
       Parameters:
            holds a reference to the field to use

   f_post_inc
       Post-increment using NF.

       Usage:
            NF++

       Parameters:
            holds a reference to the field to use

   f_pow_asg
       Exponentiation using NF.

       Usage:
            NF ^= expression

       Parameters:

            sp[0]
                 is the expression to use

   f_pre_dec
       Predecrement using NF.

       Usage:
            --NF

       Parameters:

            sp[0]
                 holds a reference to the field to use

   f_pre_inc
       Preincrement using NF.

       Usage:
            ++NF

       Parameters:

            sp[0]
                 holds a reference to the field to use

   f_pusha
       Push array reference to data split-up as fields..

       Usage:
            $0 = expression
            getline

       Parameters:

            cdp[0]
                 is a reference to the data to be split/assigned.

       Returns the resulting array reference in sp[0].

   f_pushi
       Push contents of numbered field.

       Usage:
            $expression

       Parameters:

            cdp[0]
                 holds a reference to $expression

            cdp[1]
                 holds expression

       Returns the field's value in sp[0].

   f_sub_asg
       Combination subtraction/assignment to NF.

       Usage:
            NF -= expression

       Parameters:

            sp[0]
                 holds a reference to the field to use

   fe_pusha
       Push reference to numbered field.

       Usage:
            $number

       Parameters:

            sp[0]
                 holds the field number

       Returns a reference to the field in sp[0].

   fe_pushi
       Push content of numbered field.

       Usage:
            $number

       Parameters:

            sp[0]
                 holds the field number

       Returns the field's content in sp[0].

   fflush
       Flush the output file or pipe associated with an expression.

       Usage:
            fflush( expression )

       Parameters:

            sp[0]
                 is the expression value

       Returns the result in sp[0].

   gt
       Test if first value is greater than the second.

       Usage:
            first > second

       Parameters:

            sp[0]
                 holds the second value.

            sp[-1]
                 holds the first value.

       Returns 1 in sp[0] if the first value is greater than, otherwise 0.

   gte
       Test if first value is greater than or equal to the second.

       Usage:
            first >= second

       Parameters:

            sp[0]
                 holds the second value.

            sp[-1]
                 holds the first value.

       Returns 1 in sp[0] if the first value is greater than or equal, otherwise 0.

   index
       Find the position of the second string in the first.

       Usage:
            index( first, second )

       Parameters:

            sp[0]
                 is the second string

            sp[0]
                 is the first string

       Returns the position in sp[0] starting at 1 if found, 0 if not found.

   int
       Returns a value truncated towards zero..

       Usage:
            int( value )

       Parameters:

            sp[0]
                 is the value

       Returns the result in sp[0].

   jmain
       Go from BEGIN code to MAIN code.

       Usage:
            (internal state)

       Parameters:

            none

   jmp
       Jump to a new byte-code position, by a given number of bytes.

       Usage:
            (internal state)

       Parameters:

            cdp[0]
                 holds the (signed) number of bytes by which to jump.

   jnz
       Jump to a new byte-code position if sp[0] is nonzero, by a given number of bytes.

       Usage:
            (internal state)

       Parameters:

            cdp[0]
                   holds the (signed) number of bytes by which to jump.

            sp[0]
                 holds a value to compare against 0.

   jz
       Jump to a new byte-code position if sp[0] is zero, by a given number of bytes.

       Usage:
            (internal state)

       Parameters:

            cdp[0]
                   holds the (signed) number of bytes by which to jump.

            sp[0]
                 holds a value to compare against 0.

   l_pusha
       Push a local address onto the evaluation stack.

       Usage:
            (internal state)

       Parameters:

            cdp[0]
                 holds the offset from the frame pointer fp.

       Returns the address in sp[0].

   l_pushi
       Push contents of a local variable onto the evaluation stack.

       Usage:
            (internal state)

       Parameters:

            cdp[0]
                 holds the offset from the frame pointer fp.

       Returns the contents of the local variable in sp[0].

   la_pusha
       Pushes a reference to an array onto the evaluation stack.

       Usage:
            arrayname

       Parameters:

            cdp[0]
                 holds the offset from the frame pointer fp of a reference to an array.

       Returns a reference to the array in sp[0].

   lae_pusha
       Pushes a reference to a given array cell onto the evaluation stack.

       Usage:
            arrayname[expression]

       Parameters:

            cdp[0]
                 holds the offset from the frame pointer fp of a reference to an array.

            sp[0]
                 holds an expression

       Returns a reference to the specified array cell in sp[0].

   lae_pushi
       Pushes the contents of a given array cell onto the evaluation stack.

       Usage:
            arrayname[expression]

       Parameters:

            cdp[0]
                 holds the offset from the frame pointer fp of a reference to an array.

            sp[0]
                 holds an expression

       Returns the contents of the specified array cell in sp[0].

   length
       Returns the length of a string or array value.

       Usage:
            length( value )

       Parameters:

            sp[0]
                 is the string or array reference

       Returns the length in sp[0].

   ljnz
       Special jump for logical-OR, always preceded by test.

       Usage:
            (internal state)

       Parameters:

            cdp[0]
                 holds the (signed) number of bytes by which to jump if the value is nonzero.

            sp[0]
                 holds a value to compare against 0.

   ljz
       Special jump for logical-OR, always preceded by test.

       Usage:
            (internal state)

       Parameters:

            cdp[0]
                 holds the (signed) number of bytes by which to jump if the value is zero.

            sp[0]
                 holds a value to compare against 0.

   log
       Compute the natural logarithm of a value.

       Usage:
            log( value )

       Parameters:

            sp[0]
                 is the value

       Returns the result in sp[0].

   lt
       Test if first value is less than the second.

       Usage:
            first < second

       Parameters:

            sp[0]
                 holds the second value.

            sp[-1]
                 holds the first value.

       Returns 1 in sp[0] if the first value is less than, otherwise 0.

   lte
       Test if first value is less than or equal to the second.

       Usage:
            first <= second

       Parameters:

            sp[0]
                 holds the second value.

            sp[-1]
                 holds the first value.

       Returns 1 in sp[0] if the first value is less than or equal, otherwise 0.

   match0
       Test if $0 matches a given regular expression.

       Usage:
            $0 ~ regex

       Parameters:

            cdp[0]
                 holds a reference to a regular expression.

       Returns 1 in sp[0] if $0 matches the regular expression, 0 otherwise.

   match1
       Test if a given expression matches a given regular expression.

       Usage:
            expression ~ regex

       Parameters:

            cdp[0]
                 holds a reference to a regular expression.

            sp[0]
                 holds an expression to test.

       Returns 1 in sp[0] if the expression matches the regular expression, 0 otherwise.

   match2
       Test if an expression in sp[-1] matches the regular expression in sp[0].

       Usage:
            expression ~ regex

       Parameters:

            sp[0]
                 holds a reference to a regular expression.

            sp[-1]
                 holds an expression to test.

       Returns 1 in sp[0] if the expression matches the regular expression, 0 otherwise.

   mktime
       Converts  a date specification in systime format to a timestamp.

       Usage:
            mktime( string )

       Parameters:

            sp[0]
                 holds the date-specification string

       Returns the result in sp[0].

   mod
       Compute modulus/remainder with two operands.

       Usage:
            first % second

       Parameters:

            sp[0]
                 holds the second operand

            sp[-1]
                 holds the first operand

       Returns the remainder in sp[0].

   mod_asg
       Assign modulus/remainder with two operands.

       Usage:
            first %= second

       Parameters:

            sp[0]
                 holds the second operand

            cdp[0]
                 holds the first operand

       Returns the remainder in sp[0] as well as replacing the first value.

   mul
       Compute product with two operands.

       Usage:
            first * second

       Parameters:

            sp[0]
                 holds the second value

            sp[-1]
                 holds the first value

       Returns the product in sp[0].

   mul_asg
       Assign product with two operands.

       Usage:
            first *= second

       Parameters:

            sp[0]
                 holds the second value

            sp[-1]
                 holds the first value

       Returns the product in sp[0] as well as replacing the first value.

   neq
       Compare two values.

       Usage:
            first != second

       Parameters:

            sp[0]
                 is the second value

            sp[-1]
                 is the first value

       Returns 1 in sp[0] if the values are not equal, otherwise 0.

   next
       Read the next record, restart pattern testing.

       Usage:
            next

       Parameters:

            none

   nextfile
       Begin processing the next file listed on the command line.

       Usage:
            nextfile

       Parameters:

            none

   nf_pushi
       Push the number of fields (NF) onto the evaluation stack.

       Usage:
            (internal state)

       Parameters:

            none

   not
       Compute a logical negation.

       Usage:
            ! value

       Parameters:

            sp[0]
                 holds a value to negate.

       Returns the result on the evaluation stack,  i.e.,  0  if  the  value  is  nonzero  and  1
       otherwise.

   ol_gl
       Read into $0 using getline.

       Usage:
            getline

       Parameters:

            none

   ol_gl_nr
       Read into $0 using getline, updating NR and FNR.

       Usage:
            getline < file

       Parameters:

            none

   omain
       Start executing the main section of the script (between BEGIN and END).

       Usage:
            (internal state)

       Parameters:

            none

   pop
       Pop the evaluation stack, discarding the value.

       Usage:
            (internal state)

       Parameters:

            none

   pop_al
       Finish an array “in” loop, deallocating the state information.

       Usage:
            (internal state)

       Parameters:

            none

   post_dec
       Post-decrement a value.

       Usage:
            value --

       Parameters:

            sp[0]
                 holds the value to decrement

       Returns the updated value in sp[0].

   post_inc
       Post-increment a value.

       Usage:
            value ++

       Parameters:

            sp[0]
                 holds the value to increment

       Returns the updated value in sp[0].

   pow
       Compute the first value raised to the power of the second value.

       Usage:
            first ^ second

       Parameters:

            sp[0]
                 holds the second value

            sp[-1]
                 holds the first value

       Returns the result in sp[0].

   pow_asg
       Assign the first value raised to the power of the second value.

       Usage:
            variable = first ^ second

       Parameters:

            cdp[0]
                 is a reference to the variable which will be assigned the result

            sp[0]
                 holds the second value

            sp[-1]
                 holds the first value

   pre_dec
       Pre-decrement a value.

       Usage:
            -- value

       Parameters:

            sp[0]
                 holds the value to decrement.

       Returns the updated value in sp[0];.

   pre_inc
       Pre-increment a value.

       Usage:
            ++ value

       Parameters:

            sp[0]
                 holds the value to decrement.

       Returns the updated value in sp[0];.

   pusha
       Push array address onto stack.

       Usage:
            (internal state)

       Parameters:

            cdp[0]
                 array reference follows the command.

       Returns the array in sp[0].

   pushc
       Push a data cell onto the evaluation stack.

       Usage:
            (internal state)

       Parameters:

            cdp[0]
                 is a reference to the data to push

       Returns a reference to the result in sp[0].

   pushd
       Push a double floating value onto the evaluation stack.

       Usage:
            (internal state)

       Parameters:

            cdp[0]
                 is a reference to the data to push

       Returns a reference to the result in sp[0].

   pushi
       Push contents of next referenced variable onto the evaluation stack.

       Usage:
            (internal state)

       Parameters:

            cdp[0]
                 is a reference to the data cell to copy.

       Returns a reference to the result in sp[0].

   pushint
       Reserve the next slot on the evaluation stack, setting its type.

       Usage:
            (internal state)

       Parameters:

            cdp[0]
                 holds the type to set in the new slot, e.g., for data via I/O redirection

       Returns a reference to the result in sp[0].

   pushs
       Push a reference to a string value onto the evaluation stack.

       Usage:
            (internal state)

       Parameters:

            cdp[0]
                 holds a reference to the string value

       Returns a reference to the result in sp[0].

   rand
       Returns a random number between zero and one..

       Usage:
            rand()

       Parameters:

            none

       Returns the result in sp[0].

   range
       Test a range pattern:  pat1, pat2 { action }.

       Usage:
            (internal state)

       Parameters:

            cdp[0].op
                 a flag, test pat1 if on else pat2

            cdp[1].op
                 offset of pat2 code from cdp

            cdp[2].op
                 offset of action code from cdp

            cdp[3].op
                 offset of code after the action from cdp

            cdp[4]
                 start of pat1 code

            sp[0]
                 holds arguments for the action.

   ret
       Return a function value.

       Usage:
            return value

       Parameters:

            sp[0]
                 holds the return value

       When  calling  a  function,  mawk saves the current stack, creating a new one.  On return,
       mawk restores the previous stack and returns the function value in sp[0].

   ret0
       Return from a function without providing a return-value.

       Usage:
            return

       Parameters:

            sp[0]
                 is modified to make the value uninitialized.

       As in the ret operation, mawk restores the previous stack.  After the return, sp[0] is  an
       uninitialized value.

   set_al
       Begin an array “in” loop.

       Usage:
            for ( iterator in arrayname )  statement

       Parameters:

            sp[0]
                 holds a reference to the array

            sp[-1]
                 holds a reference to the iteration variable

       Mawk  pushes  a  new  entry  onto  the  array  loop stack, and updates cdp to point to the
       statement to execute.

   sin
       Compute the sine of a value in radians.

       Usage:
            sin( value )

       Parameters:

            sp[0]
                 holds the value

       Returns the result in sp[0].

   sprintf
       Returns a string constructed from expression-list according to format.

       Usage:
            sprintf( format [, value1 [,... ] ] )

       Parameters:

            sp[0]
                 is the last parameter value; there can be up to 255.
       Returns the resulting string in sp[0].

   sqrt
       Returns the square root of a value.

       Usage:
            sqrt( value 0

       Parameters:

            sp[0]
                 is the value

       Returns the result in sp[0].

   srand
       Seeds the random number generator.

       Usage:
            srand( value )
            srand( )

       Parameters:

            sp[0]
                 is the seed value, which may be uninitialized

       Returns the previous seed value in sp[0].

   stop
       Finish a range pattern.

       Usage:
            (internal state)

       Parameters:

            none

   strftime
       Formats the given timestamp using the given format.

       Usage:
            strftime( format , timestamp , utc )
            strftime( format , timestamp )
            strftime( format )
            strftime( )

       Parameters:

            Zero to three parameters may be on the stack.  If all three are  used,  they  are  as
            follows:

            sp[0]
                 is the utc flag

            sp[-1]
                 is the timestamp value

            sp[-2]
                 is the format

       Returns the result in sp[0].

   sub
       Subtract the second value from the first.

       Usage:
            first - second

       Parameters:

            sp[0]
                 holds the second value

            sp[-1]
                 holds the first value

            Returns the result in sp[0].

   sub_asg
       Assign the difference of two values to a variable.

       Usage:
            target = first - second

       Parameters:

            cdp[0]
                 holds a reference to the variable to which to assign the result

            sp[0]
                 holds the second value

            sp[-1]
                 holds the first value

       Stores the difference in the target, leaving sp[0] pointing to the target.

   substr
       eturns the substring of string s, starting at index i, of length n.

       Usage:
            substr(s,i,n)
            substr(s,i)

       Parameters:

            Two  or  three  parameters  may  be on the stack.  If all three are used, they are as
            follows:

            sp[0]
                 holds the length n.

            sp[0]
                 holds the index i.

            sp[0]
                 holds the string s.

   system
       Executes a command, returning the wait-status.

       Usage:
            status = system( command )

       Parameters:

            sp[0]
                 is the command to execute

       Returns the wait-status in sp[0].

   systime
       Returns the current time of day as the number of seconds since the Epoch.

       Usage:
            systime( )

       Parameters:

            none

       Returns the result in sp[0].

   test
       Test a logical expression.

       Usage:
            value

       Parameters:

            sp[0]
                 holds a value to test.

       Returns the result on the evaluation stack,  i.e.,  1  if  the  value  is  nonzero  and  0
       otherwise.

   tolower
       Copy a string, converting to lowercase.

       Usage:
            tolower( value )

       Parameters:

            sp[0]
                 is the value to convert

       Returns the result in sp[0].

   toupper
       Copy a string, converting to uppercase.

       Usage:
            toupper( value )

       Parameters:

            sp[0]
                 is the value to convert

       Returns the result in sp[0].

   uminus
       Unitary minus.

       Usage:
            - value

       Parameters:

            sp[0]
                 contains  a  value to negate.  As a side-effect, if the value is a string, it is
                 cast to double floating point.

       Returns the result in sp[0].

   uplus
       Unitary plus.

       Usage:
            + value

       Parameters:

            sp[0]
                 contains a value to use.  As a side-effect, if the value is a string, it is cast
                 to double floating point.

            Returns the result in sp[0].

REGULAR EXPRESSIONS

   M_1J
       mandatory jump

   M_2JA
       optional (undesirable) jump

   M_2JB
       optional (desirable) jump

   M_2JC
       pop pos'n, optional jump if advanced

   M_ACCEPT
       end of match

   M_ANY
       arbitrary character (.)

   M_CLASS
       character class

   M_END
       end of string ($)

   M_SAVE_POS
       push position onto stack

   M_START
       start of string (^)

   M_STR
       matching a literal string

   M_U
       arbitrary string (.*)