Fun 0.41.5
The programming language that makes You have fun
Loading...
Searching...
No Matches
lte.c File Reference

Implements the OP_LTE opcode for less-than-or-equal comparison in the VM. More...

Go to the source code of this file.

Functions

 if (a.type !=VAL_INT||b.type !=VAL_INT)
 free_value (a)
 free_value (b)
 push_value (vm, res)

Variables

case OP_LTE
Value a = pop_value(vm)
Value res = make_int(a.i <= b.i ? 1 : 0)
 break

Detailed Description

Implements the OP_LTE opcode for less-than-or-equal comparison in the VM.

This file handles the OP_LTE instruction, which checks if the first value is less than or equal to the second. The values are popped from the stack, and the result (1 or 0) is pushed back.

Behavior:

  • Pops two values from the stack.
  • Checks if the first value is less than or equal to the second.
  • Pushes 1 (true) or 0 (false) onto the stack.

Error Handling:

  • Exits with an error if the operands are of incompatible types.

Example: // Bytecode: OP_LTE // Stack before: [42, 42] // Stack after: [1]

Definition in file lte.c.

Function Documentation

◆ free_value() [1/2]

free_value(a)

◆ free_value() [2/2]

free_value(b)

◆ if()

if(a.type ! = VAL_INT || b.type != VAL_INT)

Definition at line 34 of file lte.c.

◆ push_value()

push_value(vm,
res )

Variable Documentation

◆ a

Value a = pop_value(vm)

Definition at line 33 of file lte.c.

◆ break

break

Definition at line 42 of file lte.c.

◆ OP_LTE

case OP_LTE

Definition at line 31 of file lte.c.

◆ res

Value res = make_int(a.i <= b.i ? 1 : 0)

Definition at line 38 of file lte.c.