* @brief Set the value * * @param GuestRegs * @param ScriptGeneralRegisters * @param Symbol * @param Value * @return VOID */
| 182 | * @return VOID |
| 183 | */ |
| 184 | VOID |
| 185 | SetValue(PGUEST_REGS GuestRegs, |
| 186 | SCRIPT_ENGINE_GENERAL_REGISTERS * ScriptGeneralRegisters, |
| 187 | PSYMBOL Symbol, |
| 188 | UINT64 Value) |
| 189 | { |
| 190 | switch (Symbol->Type) |
| 191 | { |
| 192 | case SYMBOL_GLOBAL_ID_TYPE: |
| 193 | ScriptGeneralRegisters->GlobalVariablesList[Symbol->Value] = Value; |
| 194 | return; |
| 195 | case SYMBOL_REGISTER_TYPE: |
| 196 | SetRegValueUsingSymbol(GuestRegs, Symbol, Value); |
| 197 | return; |
| 198 | |
| 199 | case SYMBOL_STACK_INDEX_TYPE: |
| 200 | ScriptGeneralRegisters->StackIndx = Value; |
| 201 | return; |
| 202 | |
| 203 | case SYMBOL_STACK_BASE_INDEX_TYPE: |
| 204 | ScriptGeneralRegisters->StackBaseIndx = Value; |
| 205 | return; |
| 206 | |
| 207 | case SYMBOL_RETURN_VALUE_TYPE: |
| 208 | ScriptGeneralRegisters->ReturnValue = Value; |
| 209 | return; |
| 210 | |
| 211 | case SYMBOL_TEMP_TYPE: |
| 212 | ScriptGeneralRegisters->StackBuffer[ScriptGeneralRegisters->StackBaseIndx + Symbol->Value] = Value; |
| 213 | return; |
| 214 | |
| 215 | case SYMBOL_DEREFERENCE_TEMP_TYPE: |
| 216 | *(UINT64 *)ScriptGeneralRegisters->StackBuffer[ScriptGeneralRegisters->StackBaseIndx + Symbol->Value] = Value; |
| 217 | return; |
| 218 | |
| 219 | case SYMBOL_FUNCTION_PARAMETER_ID_TYPE: |
| 220 | ScriptGeneralRegisters->StackBuffer[ScriptGeneralRegisters->StackBaseIndx - 3 - Symbol->Value] = Value; |
| 221 | return; |
| 222 | } |
| 223 | } |
| 224 | |
| 225 | /** |
| 226 | * @brief Get the operator name |
no test coverage detected