1. Adding built-in routines to the euphoria interpretor

I'm trying to add some built-in routines to the eu interpretor. When I execute a
test program that calls the function "fiKernelInfo", it's telling me "unknown
opcode: 182".

In keylist.e I added some entries:
{"fiCallProc", SC_PREDEF, PROC, FI_CALL_PROC, 3, E_PURE},
{"fiCallFunc", SC_PREDEF, FUNC, FI_CALL_FUNC, 3, E_PURE},
{"fiOpenSession", SC_PREDEF, FUNC, FI_OPEN_SESSION, 1, E_PURE},
{"fiCloseSession", SC_PREDEF, PROC, FI_CLOSE_SESSION, 1, E_PURE},
{"fiKernelInfo", SC_PREDEF, FUNC, FI_KERNEL_INFO, 0, E_PURE}


rywilly i also added entries in opnames.e:
"FI_CALL_PROC",
"FI_CALL_FUNC",
"FI_OPEN_SESSION",
"FI_CLOSE_SESSION",
"FI_KERNEL_INFO"    --182


and in reswords.e
FI_CALL_PROC = 178,
FI_CALL_FUNC = 179,
FI_OPEN_SESSION = 180,
FI_CLOSE_SESSION = 181,
FI_KERNEL_INFO = 182,
MAX_OPCODE = 182


and added procedures in execute.e:
procedure opFI_CALL_PROC()
    a = Code[pc+1]
    b = Code[pc+2]
    c = Code[pc+3]
    fiCallProc(val[a], val[b], val[c])
    pc += 4
end procedure

procedure opFI_CALL_FUNC()
    a = Code[pc+1]
    b = Code[pc+2]
    c = Code[pc+3]
    target = Code[pc+4]
    val[target] = fiCallFunc(val[a], val[b], val[c])
    pc += 5
end procedure

procedure opFI_OPEN_SESSION()
    a = Code[pc+1]
    target = Code[pc+2]
    val[target] = fiOpenSession(val[a])
    pc += 3
end procedure

procedure opFI_CLOSE_SESSION()
    a = Code[pc+1]
    b = Code[pc+2]
    fiCloseSession(val[a])
    pc += 3
end procedure

procedure opFI_KERNEL_INFO()
    target = Code[pc+1]
    val[target] = fiKernelInfo()
    pc += 2
end procedure


When i call the fiKernelInfo() function in my test app, it says op code 182 is
unknown. So, it's seems to be partially working, but i'm missing something
somewhere. Does anyone know what else I need to do?

~Ryan W. Johnson

Fluid Application Environment
http://www.fluidae.com/

[cool quote here, if i ever think of one...]

new topic     » topic index » view message » categorize

2. Re: Adding built-in routines to the euphoria interpretor

Perhaps I should have specified: I'm just using the euphoria backend
(euphoria-in-euphoria intepretor). This is to be used as basically a scripting
engine within a euphoria program. I'm not doing anything to the C backend.

~Ryan W. Johnson

Fluid Application Environment
http://www.fluidae.com/

[cool quote here, if i ever think of one...]

new topic     » goto parent     » topic index » view message » categorize

3. Re: Adding built-in routines to the euphoria interpretor

Ryan W. Johnson wrote:
> 
> I'm trying to add some built-in routines to the eu interpretor. When I execute
> a test program that calls the function "fiKernelInfo", it's telling me
> "unknown
> opcode: 182".

<snip>

It looks like you forgot to update emit_op() in emit.e.

Matt

new topic     » goto parent     » topic index » view message » categorize

4. Re: Adding built-in routines to the euphoria interpretor

On Tue, 21 Nov 2006 20:52:29 -0800, "Ryan W. Johnson"
<guest at RapidEuphoria.com> wrote:

>When i call the fiKernelInfo() function in my test app, it says op 
>code 182 is unknown. So, it's seems to be partially working, but i'm 
>missing something somewhere. Does anyone know what else I need to do?
See emit_op in emit.e
For example (untested!), add FI_OPEN_SESSION to the test:
elsif find(op, {RAND, PEEK, PEEK4S, PEEK4U, NOT_BITS, NOT}) then


Regards,
Pete

new topic     » goto parent     » topic index » view message » categorize

Search



Quick Links

User menu

Not signed in.

Misc Menu