<commit_before>
#ifndef BF_JIT_H_
#define BF_JIT_H_

#include <vector>

namespace bf {

class jit {
public:
	jit(size_t mem_pages = 1, size_t exec_pages = 1);
	~jit();

	// give jit tokens
	// void put(tok *t);
	bool runnable() const;
	// void run();<commit_msg>added archetecture specific operations in a generic way<commit_after>
#ifndef BF_JIT_H_
#define BF_JIT_H_

#include <vector>

namespace bf {

// interface for architecture
class architecture {
public:
	// listing of operations
	enum operation {
		MOV_64,
		MOV_CX_SI,
		MOV_DX_64,
		MOV_DI_64,
		MOV_AX_64,
		ADD_LIT8,
		ADD_LIT8_LOCK,
		ADD_LIT8_SI,
		ADD_LIT8_SI_LOCK,
		LOOP,
		SYSCALL,
		RET,
		MOV_SI_AX,
		MOV_AS_LIT64
	};

	virtual ~architecture() {}
	virtual const uint8_t *get(enum operation op) const = 0;
};

class arch_x86 : public architecture {
public:
	virtual const uint8_t *get(enum operation op) const;
};

class jit {
public:
	jit(size_t mem_pages = 1, size_t exec_pages = 1);
	~jit();

	// give jit tokens
	// void put(tok *t);
	bool runnable() const;
	// void run();
{'fraction_non_alphanumeric': 0.111534795042898, 'fraction_numerical': 0.0219256434699714, 'mean_word_length': 3.976303317535545, 'pattern_counts': {'":': 0, '<': 5, '<?xml version=': 0, '>': 5, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '5650438', 'n_tokens_mistral': 475, 'n_tokens_neox': 431, 'n_words': 113}