update symbol structure and stack buffer in script engine

This commit is contained in:
xmaple555 2024-08-23 22:33:36 +08:00
parent 8edd118a40
commit 211295bf81
7 changed files with 636 additions and 681 deletions

View file

@ -1064,7 +1064,7 @@ CodeGen(PTOKEN_LIST MatchedStack, PSYMBOL_BUFFER CodeBuffer, PTOKEN Operator, PS
for (int i = MatchedStack->Pointer; i > 0; i--)
{
Op1 = Top(MatchedStack);
if (Op1->Type == TEMP || Op1->Type == HEX || Op1->Type == OCTAL || Op1->Type == BINARY)
if (Op1->Type == TEMP || Op1->Type == HEX || Op1->Type == OCTAL || Op1->Type == BINARY || Op1->Type == PSEUDO_REGISTER)
{
*Error = SCRIPT_ENGINE_ERROR_SYNTAX;
Pop(MatchedStack);
@ -1183,7 +1183,7 @@ CodeGen(PTOKEN_LIST MatchedStack, PSYMBOL_BUFFER CodeBuffer, PTOKEN Operator, PS
break;
}
Op1Symbol->VariableType = (unsigned long long)VariableType;
//Op1Symbol->VariableType = (unsigned long long)VariableType;
}
}
@ -2604,7 +2604,6 @@ NewSymbol(void)
Symbol->Value = 0;
Symbol->Len = 0;
Symbol->Type = 0;
Symbol->VariableType = 0;
return Symbol;
}
@ -2618,7 +2617,7 @@ PSYMBOL
NewStringSymbol(PTOKEN Token)
{
PSYMBOL Symbol;
int BufferSize = (3 * sizeof(unsigned long long) + Token->Len) / sizeof(SYMBOL) + 1;
int BufferSize = (SIZE_SYMBOL_WITHOUT_LEN + Token->Len) / sizeof(SYMBOL) + 1;
Symbol = (PSYMBOL)calloc(sizeof(SYMBOL), BufferSize);
if (Symbol == NULL)
@ -2632,7 +2631,6 @@ NewStringSymbol(PTOKEN Token)
memcpy(&Symbol->Value, Token->Value, Token->Len);
SetType(&Symbol->Type, SYMBOL_STRING_TYPE);
Symbol->Len = Token->Len;
Symbol->VariableType = 0;
return Symbol;
}
@ -2646,7 +2644,7 @@ PSYMBOL
NewWstringSymbol(PTOKEN Token)
{
PSYMBOL Symbol;
int BufferSize = (3 * sizeof(unsigned long long) + Token->Len) / sizeof(SYMBOL) + 1;
int BufferSize = (SIZE_SYMBOL_WITHOUT_LEN + Token->Len) / sizeof(SYMBOL) + 1;
Symbol = (PSYMBOL)malloc(BufferSize * sizeof(SYMBOL));
if (Symbol == NULL)
@ -2660,7 +2658,6 @@ NewWstringSymbol(PTOKEN Token)
memcpy(&Symbol->Value, Token->Value, Token->Len);
SetType(&Symbol->Type, SYMBOL_WSTRING_TYPE);
Symbol->Len = Token->Len;
Symbol->VariableType = 0;
return Symbol;
}
@ -2679,7 +2676,7 @@ NewWstringSymbol(PTOKEN Token)
unsigned int
GetSymbolHeapSize(PSYMBOL Symbol)
{
int Temp = (3 * sizeof(unsigned long long) + (int)Symbol->Len) / sizeof(SYMBOL) + 1;
int Temp = (SIZE_SYMBOL_WITHOUT_LEN + (int)Symbol->Len) / sizeof(SYMBOL) + 1;
return Temp;
}