Fun
0.41.5
The programming language that makes you have fun!
Main Page
Data Structures
Files
File List
Globals
Loading...
Searching...
No Matches
src
vm
core
swap.c
Go to the documentation of this file.
1
/*
2
* This file is part of the Fun programming language.
3
* https://fun-lang.xyz/
4
*
5
* Copyright 2025 Johannes Findeisen <you@hanez.org>
6
* Licensed under the terms of the Apache-2.0 license.
7
* https://opensource.org/license/apache-2-0
8
*/
9
10
/**
11
* @file swap.c
12
* @brief Implements the OP_SWAP opcode for stack manipulation in the VM.
13
*
14
* This file handles the OP_SWAP instruction, which swaps the top two values
15
* on the stack.
16
*
17
* Behavior:
18
* - Swaps stack[sp] and stack[sp-1]
19
* - No type checking
20
*
21
* Error Handling:
22
* - Exits if stack underflow
23
*/
24
25
case
OP_SWAP
: {
26
if
(vm->sp < 1) {
27
fprintf
(stderr,
"Runtime error: stack underflow for SWAP\n"
);
28
exit
(1);
29
}
30
Value
a
= vm->stack[vm->sp];
31
Value
b
= vm->stack[vm->sp - 1];
32
vm->stack[vm->sp] =
b
;
33
vm->stack[vm->sp - 1] =
a
;
34
break
;
35
}
a
Value a
Definition
add.c:37
b
uint32_t b
Definition
band.c:32
OP_SWAP
@ OP_SWAP
Definition
bytecode.h:76
Value
Tagged union representing a Fun value.
Definition
value.h:68
fprintf
#define fprintf
Definition
vm.c:200
exit
#define exit(code)
Definition
vm.c:230
Generated on
for Fun by
1.16.1