comparison cbackend_c.rhope @ 176:327bcf35e094

Add bytecode interpreter
author Mike Pavone <pavone@retrodev.com>
date Wed, 08 Jun 2011 23:24:29 -0700
parents 926b56a43f47
children
comparison
equal deleted inserted replaced
175:03e4fa277291 176:327bcf35e094
593 { 593 {
594 source <- [psource]Make Op[func] 594 source <- [psource]Make Op[func]
595 dest <- [pdest]Make Op[func] 595 dest <- [pdest]Make Op[func]
596 out <- [func]Add Statement[[[dest]Append[" = "]]Append[source]] 596 out <- [func]Add Statement[[[dest]Append[" = "]]Append[source]]
597 } 597 }
598
598 599
599 600
600 601
601 Do AddRef@C Function[func,psource,pdest:out] 602 Do AddRef@C Function[func,psource,pdest:out]
602 { 603 {
1543 1544
1544 Dispatch@C Program[program,all methods:out] 1545 Dispatch@C Program[program,all methods:out]
1545 { 1546 {
1546 out <- [[[[["typedef enum {\n" 1547 out <- [[[[["typedef enum {\n"
1547 ]Append[Fold[_Dispatch Enum[?], 1548 ]Append[Fold[_Dispatch Enum[?],
1548 [Fold[_Dispatch Enum Methods[[program]Escape Pattern >>,?], "", all methods]]Append["\tFUNC_Build,\n\tFUNC_BlueprintSP_Of,\n\tFUNC_ID,\n\tFUNC_BlueprintSP_FromSP_ID,\n\tFUNC_Pause,\n\tRES_1_Pause,\n\tFUNC_Resume,\n"], 1549 [Fold[_Dispatch Enum Methods[[program]Escape Pattern >>,?], "", all methods]]Append["\tFUNC_Build,\n\tFUNC_BlueprintSP_Of,\n\tFUNC_ID,\n\tFUNC_BlueprintSP_FromSP_ID,\n\tFUNC_Pause,\n\tRES_1_Pause,\n\tFUNC_Resume,\n\tFUNC_RunSP_Bytecode,\n\tRES_1_RunSP_Bytecode,\n"],
1549 [program]Functions >>]] 1550 [program]Functions >>]]
1550 ]Append["\tEND,\n\tEND_THREAD\n} funcids;\n\n"] 1551 ]Append["\tEND,\n\tEND_THREAD\n} funcids;\n\n"]
1551 ]Append["#define DispatchEntries \\\n"] 1552 ]Append["#define DispatchEntries \\\n"]
1552 ]Append[Fold[_Dispatch Switch[?], 1553 ]Append[Fold[_Dispatch Switch[?],
1553 [Fold[_Dispatch Switch Methods[[program]Escape Pattern >>,?], "", all methods]]Append["\tDispatchEntry(Build)\\\n\tDispatchEntry(BlueprintSP_Of)\\\n\tDispatchEntry(ID)\\\n\tDispatchEntry(BlueprintSP_FromSP_ID)\\\n\tDispatchEntry(Pause)\\\n\tResumeEntry(1,Pause)\\\n\tDispatchEntry(Resume)\\\n"], 1554 [Fold[_Dispatch Switch Methods[[program]Escape Pattern >>,?], "", all methods]]Append["\tDispatchEntry(Build)\\\n\tDispatchEntry(BlueprintSP_Of)\\\n\tDispatchEntry(ID)\\\n\tDispatchEntry(BlueprintSP_FromSP_ID)\\\n\tDispatchEntry(Pause)\\\n\tResumeEntry(1,Pause)\\\n\tDispatchEntry(Resume)\\\n\tDispatchEntry(RunSP_Bytecode)\\\n\tResumeEntry(1,RunSP_Bytecode)\\\n"],
1554 [program]Functions >>]] 1555 [program]Functions >>]]
1555 ]Append["\tEndEntry\\\n\tEndThreadEntry\n\n"] 1556 ]Append["\tEndEntry\\\n\tEndThreadEntry\n\n"]
1556 } 1557 }
1557 1558
1558 Not Native[func:out] 1559 Not Native[func:out]