byteCodeFrame_print is ok

This commit is contained in:
lyon1998 2022-03-13 13:00:45 +08:00
parent e73a8d2950
commit eb35a8c536
4 changed files with 21 additions and 12 deletions

View File

@ -2133,6 +2133,9 @@ TEST(asmer, asmer_to_instructUnit) {
byteCodeFrame_init(&bytecode_frame);
byteCodeFrame_appendFromAsm(&bytecode_frame, asm_line);
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*)"3");
EXPECT_STREQ(constPool_getNext(&(bytecode_frame.const_pool)), (char*)"add");

View File

@ -1553,7 +1553,7 @@ ByteCodeFrame* byteCodeFrame_appendFromAsm(ByteCodeFrame* self, char* pikaAsm) {
}
/* append instructUnit to instructArray */
instructArray_append(&(self->Instruct_array), &ins_unit);
instructArray_append(&(self->instruct_array), &ins_unit);
/* load const to const pool buff */
char* data = line + 6;

View File

@ -914,12 +914,12 @@ exit:
void byteCodeFrame_init(ByteCodeFrame* self) {
constPool_init(&(self->const_pool));
instructArray_init(&(self->Instruct_array));
instructArray_init(&(self->instruct_array));
}
void byteCodeFrame_deinit(ByteCodeFrame* self) {
constPool_deinit(&(self->const_pool));
instructArray_deinit(&(self->Instruct_array));
instructArray_deinit(&(self->instruct_array));
}
void instructArray_init(InstructArray* ins_array) {
@ -996,3 +996,7 @@ exit:
self->content_offset_now = offset_befor;
return;
}
size_t byteCodeFrame_getSize(ByteCodeFrame* bf){
return bf->const_pool.size + bf->instruct_array.size;
}

View File

@ -55,7 +55,7 @@ typedef struct InstructArray_t {
typedef struct ByteCodeFrame_t {
ConstPool const_pool;
InstructArray Instruct_array;
InstructArray instruct_array;
} ByteCodeFrame;
VMParameters* pikaVM_run(PikaObj* self, char* pyLine);
@ -130,6 +130,8 @@ void constPool_print(ConstPool* self);
void byteCodeFrame_init(ByteCodeFrame* bf);
void byteCodeFrame_deinit(ByteCodeFrame* bf);
size_t byteCodeFrame_getSize(ByteCodeFrame* bf);
void instructArray_init(InstructArray* ins_array);
void instructArray_deinit(InstructArray* ins_array);
void instructArray_append(InstructArray* ins_array, InstructUnit* ins_unit);