- Статус
 - Оффлайн
 
- Регистрация
 - 4 Авг 2024
 
- Сообщения
 - 132
 
- Реакции
 - 4
 
		Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
	
Я это делал за 5 минут.
	
	
	
	
	
	
		
			
			
			
			
			
		
	
	
	
		
	
	
		
	
	
	
	
	
	
	
		
			
			
			
			
			
		
	
	
	
		
	
	
		
	
				
			
			
				Custom JVM:
			
		
		
		#include <iostream>
#include <stack>
#include <map>
#include <vector>
#include <string>
#include <stdexcept>
class ClassObject {
private:
    std::string name;
    std::map<std::string, std::vector<int>> methods;
public:
    ClassObject(const std::string& name) : name(name) {}
    void addMethod(const std::string& methodName, const std::vector<int>& bytecode) {
        methods[methodName] = bytecode;
    }
    std::vector<int> getMethod(const std::string& methodName) {
        return methods[methodName];
    }
};
class SimpleJVM {
private:
    std::stack<int> stack;
    std::map<std::string, ClassObject*> classLoader;
public:
    SimpleJVM() {}
    ~SimpleJVM() {
        for (auto& entry : classLoader) {
            delete entry.second;
        }
    }
    ClassObject* loadClass(const std::string& className) {
        if (classLoader.find(className) != classLoader.end()) {
            return classLoader[className];
        }
        ClassObject* cls = new ClassObject(className);
        cls->addMethod("main", {0x10, 0x01, 0x15, 0x00});
        classLoader[className] = cls;
        return cls;
    }
    void execute(const std::string& className) {
        ClassObject* cls = loadClass(className);
        std::vector<int> method = cls->getMethod("main");
        for (int instr : method) {
            switch(instr) {
                case 0x10:
                    stack.push(42);
                    break;
                case 0x01:
                    std::cout << stack.top() << std::endl;
                    stack.pop();
                    break;
                case 0x15:
                    stack.push(100);
                    break;
                case 0x00:
                    return;
                default:
                    throw std::runtime_error("Unknown instruction");
            }
        }
    }
};
int main() {
    SimpleJVM jvm;
    jvm.execute("MyClass");
}
	
			
				Код: