fix '\r' err in pikaRunAsm

This commit is contained in:
lyon1998 2022-03-24 13:55:02 +08:00
parent 7e36cd3bbd
commit ed489e2070
2 changed files with 39 additions and 8 deletions

View File

@ -2432,3 +2432,31 @@ TEST(asmer, asm_to_bytecodeArray) {
byteCodeFrame_deinit(&bytecode_frame);
EXPECT_EQ(pikaMemNow(), 0);
}
TEST(asmer, asm_to_bytecode_0x0d) {
char* pikaAsm =(char*)
"B0\n"
"0 RUN __init__\n";
char* pikaAsm1 =(char*)
"B0\r\n"
"0 RUN __init__\r\n";
ByteCodeFrame bytecode_frame;
byteCodeFrame_init(&bytecode_frame);
byteCodeFrame_appendFromAsm(&bytecode_frame, pikaAsm);
byteCodeFrame_printAsArray(&bytecode_frame);
ByteCodeFrame bytecode_frame1;
byteCodeFrame_init(&bytecode_frame1);
byteCodeFrame_appendFromAsm(&bytecode_frame1, pikaAsm1);
byteCodeFrame_printAsArray(&bytecode_frame1);
EXPECT_EQ(bytecode_frame1.const_pool.size, bytecode_frame.const_pool.size);
EXPECT_EQ(bytecode_frame1.instruct_array.size,
bytecode_frame.instruct_array.size);
/* deinit */
byteCodeFrame_deinit(&bytecode_frame1);
byteCodeFrame_deinit(&bytecode_frame);
EXPECT_EQ(pikaMemNow(), 0);
}

View File

@ -1517,14 +1517,18 @@ ByteCodeFrame* byteCodeFrame_appendFromAsm(ByteCodeFrame* self, char* pikaAsm) {
.is_new_line = 0,
.line_pointer = pikaAsm,
};
uint16_t const_pool_offset;
char* data;
uint16_t exist_offset;
uint16_t const_pool_offset;
char* data;
uint16_t exist_offset;
char line_buff[PIKA_CONFIG_PATH_BUFF_SIZE] = {0};
for (int i = 0; i < strCountSign(pikaAsm, '\n'); i++) {
char* line = strGetLine(line_buff, asmer.line_pointer);
InstructUnit ins_unit = {0};
InstructUnit ins_unit = {0};
/* remove '\r' */
if (line[strGetSize(line) - 1] == '\r') {
line[strGetSize(line) - 1] = 0;
}
/* process block deepth flag*/
if ('B' == line[0]) {
asmer.block_deepth_now = line[1] - '0';
@ -1538,8 +1542,7 @@ ByteCodeFrame* byteCodeFrame_appendFromAsm(ByteCodeFrame* self, char* pikaAsm) {
const_pool_offset = 0;
data = line + 6;
exist_offset =
constPool_getOffsetByData(&(self->const_pool), data);
exist_offset = constPool_getOffsetByData(&(self->const_pool), data);
/* get const offset */
if (strEqu(data, "")) {
@ -1611,7 +1614,7 @@ static void __handler_instructArray_output_file(InstructArray* self,
__platform_fwrite(ins_unit, 1, instructUnit_getSize(), self->output_f);
}
/*
/*
need implament :
__platform_fopen()
__platform_fwrite()