calc6a.cpp

来自「Boost provides free peer-reviewed portab」· C++ 代码 · 共 59 行

CPP
59
字号
/*=============================================================================    Copyright (c) 2001-2007 Joel de Guzman    Distributed under the Boost Software License, Version 1.0. (See accompanying    file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)=============================================================================*/#include "calc6.hpp"void vmachine::execute(std::vector<int> const& code, int nvars){    std::vector<int>::const_iterator pc = code.begin();    std::vector<int>::iterator locals = stack.begin();    stack_ptr = stack.begin() + nvars;    while (pc != code.end())    {        switch (*pc++)        {            case op_neg:                stack_ptr[-1] = -stack_ptr[-1];                break;            case op_add:                --stack_ptr;                stack_ptr[-1] += stack_ptr[0];                break;            case op_sub:                --stack_ptr;                stack_ptr[-1] -= stack_ptr[0];                break;            case op_mul:                --stack_ptr;                stack_ptr[-1] *= stack_ptr[0];                break;            case op_div:                --stack_ptr;                stack_ptr[-1] /= stack_ptr[0];                break;            case op_load:                *stack_ptr++ = locals[*pc++];                break;            case op_store:                --stack_ptr;                locals[*pc++] = stack_ptr[0];                break;            case op_int:                *stack_ptr++ = *pc++;                break;        }    }}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?