mirror of
https://gitee.com/Lyon1998/pikapython.git
synced 2025-01-15 17:02:53 +08:00
byteCodeFrame_print is ok
This commit is contained in:
parent
e73a8d2950
commit
eb35a8c536
@ -2133,6 +2133,9 @@ TEST(asmer, asmer_to_instructUnit) {
|
|||||||
byteCodeFrame_init(&bytecode_frame);
|
byteCodeFrame_init(&bytecode_frame);
|
||||||
byteCodeFrame_appendFromAsm(&bytecode_frame, asm_line);
|
byteCodeFrame_appendFromAsm(&bytecode_frame, asm_line);
|
||||||
constPool_print(&(bytecode_frame.const_pool));
|
constPool_print(&(bytecode_frame.const_pool));
|
||||||
|
instructArray_print(&(bytecode_frame.instruct_array));
|
||||||
|
size_t byteCode_size = byteCodeFrame_getSize(&bytecode_frame);
|
||||||
|
EXPECT_EQ(byteCode_size, 33);
|
||||||
EXPECT_STREQ(constPool_getNext(&(bytecode_frame.const_pool)), (char*)"2");
|
EXPECT_STREQ(constPool_getNext(&(bytecode_frame.const_pool)), (char*)"2");
|
||||||
EXPECT_STREQ(constPool_getNext(&(bytecode_frame.const_pool)), (char*)"3");
|
EXPECT_STREQ(constPool_getNext(&(bytecode_frame.const_pool)), (char*)"3");
|
||||||
EXPECT_STREQ(constPool_getNext(&(bytecode_frame.const_pool)), (char*)"add");
|
EXPECT_STREQ(constPool_getNext(&(bytecode_frame.const_pool)), (char*)"add");
|
||||||
|
@ -1553,7 +1553,7 @@ ByteCodeFrame* byteCodeFrame_appendFromAsm(ByteCodeFrame* self, char* pikaAsm) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* append instructUnit to instructArray */
|
/* append instructUnit to instructArray */
|
||||||
instructArray_append(&(self->Instruct_array), &ins_unit);
|
instructArray_append(&(self->instruct_array), &ins_unit);
|
||||||
|
|
||||||
/* load const to const pool buff */
|
/* load const to const pool buff */
|
||||||
char* data = line + 6;
|
char* data = line + 6;
|
||||||
|
@ -914,12 +914,12 @@ exit:
|
|||||||
|
|
||||||
void byteCodeFrame_init(ByteCodeFrame* self) {
|
void byteCodeFrame_init(ByteCodeFrame* self) {
|
||||||
constPool_init(&(self->const_pool));
|
constPool_init(&(self->const_pool));
|
||||||
instructArray_init(&(self->Instruct_array));
|
instructArray_init(&(self->instruct_array));
|
||||||
}
|
}
|
||||||
|
|
||||||
void byteCodeFrame_deinit(ByteCodeFrame* self) {
|
void byteCodeFrame_deinit(ByteCodeFrame* self) {
|
||||||
constPool_deinit(&(self->const_pool));
|
constPool_deinit(&(self->const_pool));
|
||||||
instructArray_deinit(&(self->Instruct_array));
|
instructArray_deinit(&(self->instruct_array));
|
||||||
}
|
}
|
||||||
|
|
||||||
void instructArray_init(InstructArray* ins_array) {
|
void instructArray_init(InstructArray* ins_array) {
|
||||||
@ -996,3 +996,7 @@ exit:
|
|||||||
self->content_offset_now = offset_befor;
|
self->content_offset_now = offset_befor;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
size_t byteCodeFrame_getSize(ByteCodeFrame* bf){
|
||||||
|
return bf->const_pool.size + bf->instruct_array.size;
|
||||||
|
}
|
||||||
|
@ -55,7 +55,7 @@ typedef struct InstructArray_t {
|
|||||||
|
|
||||||
typedef struct ByteCodeFrame_t {
|
typedef struct ByteCodeFrame_t {
|
||||||
ConstPool const_pool;
|
ConstPool const_pool;
|
||||||
InstructArray Instruct_array;
|
InstructArray instruct_array;
|
||||||
} ByteCodeFrame;
|
} ByteCodeFrame;
|
||||||
|
|
||||||
VMParameters* pikaVM_run(PikaObj* self, char* pyLine);
|
VMParameters* pikaVM_run(PikaObj* self, char* pyLine);
|
||||||
@ -130,6 +130,8 @@ void constPool_print(ConstPool* self);
|
|||||||
|
|
||||||
void byteCodeFrame_init(ByteCodeFrame* bf);
|
void byteCodeFrame_init(ByteCodeFrame* bf);
|
||||||
void byteCodeFrame_deinit(ByteCodeFrame* bf);
|
void byteCodeFrame_deinit(ByteCodeFrame* bf);
|
||||||
|
size_t byteCodeFrame_getSize(ByteCodeFrame* bf);
|
||||||
|
|
||||||
void instructArray_init(InstructArray* ins_array);
|
void instructArray_init(InstructArray* ins_array);
|
||||||
void instructArray_deinit(InstructArray* ins_array);
|
void instructArray_deinit(InstructArray* ins_array);
|
||||||
void instructArray_append(InstructArray* ins_array, InstructUnit* ins_unit);
|
void instructArray_append(InstructArray* ins_array, InstructUnit* ins_unit);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user