1
/*=============================================================================
2
Copyright (c) 2001-2011 Joel de Guzman
4
Distributed under the Boost Software License, Version 1.0. (See accompanying
5
file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
6
=============================================================================*/
11
void vmachine::execute(std::vector<int> const& code)
13
std::vector<int>::const_iterator pc = code.begin();
14
std::vector<int>::iterator locals = stack.begin();
15
stack_ptr = stack.begin();
17
while (pc != code.end())
22
stack_ptr[-1] = -stack_ptr[-1];
27
stack_ptr[-1] += stack_ptr[0];
32
stack_ptr[-1] -= stack_ptr[0];
37
stack_ptr[-1] *= stack_ptr[0];
42
stack_ptr[-1] /= stack_ptr[0];
46
*stack_ptr++ = locals[*pc++];
51
locals[*pc++] = stack_ptr[0];
59
stack_ptr = stack.begin() + *pc++;