Initial 80386 microcode commit.

This commit is contained in:
Andrew Jenner
2026-05-23 11:01:52 +01:00
parent e355b03ce3
commit 79596c4c8b
139 changed files with 47172 additions and 2 deletions
@@ -0,0 +1,71 @@
#include "alfe/main.h"
#ifndef INCLUDED_STRING_FUNCTIONS_H
#define INCLUDED_STRING_FUNCTIONS_H
#include "alfe/function.h"
class AddStringString : public Nullary<Function, AddStringString>
{
public:
class Body : public Nullary::Body
{
public:
Value evaluate(List<Value> arguments, Span span) const
{
auto i = arguments.begin();
String l = i->value<String>();
++i;
return Value(l + i->value<String>());
}
Identifier identifier() const { return OperatorPlus(); }
FunctionType type() const
{
return FunctionType(StringType(), StringType(), StringType());
}
};
};
class MultiplyIntegerString : public Nullary<Function, MultiplyIntegerString>
{
public:
class Body : public Nullary::Body
{
public:
Value evaluate(List<Value> arguments, Span span) const
{
auto i = arguments.begin();
int l = i->value<int>();
++i;
return Value(l*i->value<String>());
}
Identifier identifier() const { return OperatorStar(); }
FunctionType type() const
{
return FunctionType(StringType(), IntegerType(), StringType());
}
};
};
class MultiplyStringInteger : public Nullary<Function, MultiplyStringInteger>
{
public:
class Body : public Nullary::Body
{
public:
Value evaluate(List<Value> arguments, Span span) const
{
auto i = arguments.begin();
String l = i->value<String>();
++i;
return Value(l*i->value<int>());
}
Identifier identifier() const { return OperatorStar(); }
FunctionType type() const
{
return FunctionType(StringType(), StringType(), IntegerType());
}
};
};
#endif // INCLUDED_STRING_FUNCTIONS_H