Asvi

From Esolang
Jump to navigation Jump to search
The creator of this esolang did leave from esolangs wiki. Please help us by adding some more information.
This is still a work in progress. It may be changed in the future.

Introduction

The Asvi programming language was made to have a Virtual Machine, that is similar to Assembly code, Turing complete and esoteric at the same time.

Syntax

Asvi instructions are just 2 character, without parameters, so it would be really easy to make an interpreter.

File extensions

Asvi file extensions are .asvi and .avmc.

.asvi is for storing source code
.avmc is for storing the Asvi Virtual Machine code

How data is stored

Asvi stores data with a stack, a heap, an accumulator abbreviated as acc and some pointer registers.

This is serious business man, specially because there is 2 characters for 1 instruction so you would need to use the entire Unicode table. For legal reasons that was a joke

Registers

Program counter abbreviated as PC register:
A register that stores the char that is running right now.
Auxiliar Accumulator abbreviated as auc register:
A register that is an auxiliar accumulator.

Abbreviations

Word Abbreviation
Program Counter pc
Accumulator acc

Instructions

Registers manipulation

Instruction Result Description
xa aux = (aux + 1) Increments the aux register
xd aux = (aux - 1) Decrements the aux register
ai acc = (acc + 1) Increments the acc register
ad acc = (acc - 1) Decrements the acc register
pc pc = acc Set the PC register to the acc register
ms mem[acc] = aux Can't explain
ma mem[acc] = (mem[acc] + aux) Increments the memory location pointed by acc

Final notes

Program stores in the same memory

The memory of the program and code of the program is stored in the same memory. The code of the program is stored in numbers, a number means an instruction, this is the instruction table:

Number Equivalent to
Ejemplo Ejemplo
Ejemplo Ejemplo

.avmc File extension

Implementations

This is on WIP so there is a no interpreter, If I would make a change I would need to make the interpreter again