Generate C source file to represent mrb_irep structures.

Type `mrbc -S -B<init> -o<outfile> <rbfiles...>` to generate the C
source code that holds compiled `mrb_irep`.

Appending the following code to the bottom of the generated code,
`mruby` executes the compiled code:

```C
int
main()
{
  mrb_state *mrb = mrb_open();
  struct RProc *p = mrb_proc_new(mrb, &init_irep);
  mrb_vm_run(mrb, p, mrb_top_self(mrb), 0);
  mrb_close(mrb);
  return 0;
}
```

Eventually static compile should use this representation, instead
of `uint8_t` array that holds `mrb` data, so that we can skip
interpreting `mrb` data.
This commit is contained in:
Yukihiro "Matz" Matsumoto
2020-06-09 22:30:14 +09:00
parent f1c06eef7c
commit 7deb41b0e8
2 changed files with 74 additions and 26 deletions
+1
View File
@@ -65,6 +65,7 @@ typedef struct mrb_irep {
#define MRB_ISEQ_NO_FREE 1
#define MRB_IREP_NO_FREE 2
#define MRB_IREP_STATIC 3
MRB_API mrb_irep *mrb_add_irep(mrb_state *mrb);