コード例 #1
0
ファイル: mathoperators.cpp プロジェクト: thunder422/ibcx
void executeExponentialIntInt(Executer &executer)
{
    auto y = executer.topInt();
    executer.pop();
    auto x = executer.topInt();
    executer.setTop(PowerIntInt{executer, x, y}());
}
コード例 #2
0
ファイル: mathoperators.cpp プロジェクト: thunder422/ibcx
void executeExponentialIntDbl(Executer &executer)
{
    auto y = executer.topDbl();
    executer.pop();
    auto x = executer.topIntAsDbl();
    calculatePowerDblDbl(executer, x, y);
}
コード例 #3
0
ファイル: mathoperators.cpp プロジェクト: thunder422/ibcx
inline int32_t popIntegerDivisor(Executer &executer)
{
    auto rhs = executer.topInt();
    checkDivideByZero(executer, rhs);
    executer.pop();
    return rhs;
}
コード例 #4
0
ファイル: mathoperators.cpp プロジェクト: thunder422/ibcx
inline double popDoubleDivisor(Executer &executer)
{
    auto rhs = executer.topDbl();
    checkDivideByZero(executer, rhs);
    executer.pop();
    return rhs;
}
コード例 #5
0
ファイル: mathoperators.cpp プロジェクト: thunder422/ibcx
void executeCatTmpTmp(Executer &executer)
{
    auto rhs = executer.moveTopTmpStr();
    executer.pop();

    *executer.topTmpStr() += *rhs;
}
コード例 #6
0
ファイル: mathoperators.cpp プロジェクト: thunder422/ibcx
void executeMultiplyIntDbl(Executer &executer)
{
    auto rhs = executer.topDbl();
    executer.pop();
    auto lhs = executer.topIntAsDbl();
    multiplyAndCheckResult(executer, lhs, rhs);
}
コード例 #7
0
ファイル: mathoperators.cpp プロジェクト: thunder422/ibcx
void executeCatStrStr(Executer &executer)
{
    auto rhs = executer.topStr();
    executer.pop();

    executer.setTop(*executer.topStr());
    *executer.topTmpStr() += *rhs;
}
コード例 #8
0
ファイル: mathoperators.cpp プロジェクト: thunder422/ibcx
void executeSubtractDblDbl(Executer &executer)
{
    auto rhs = executer.topDbl();
    executer.pop();
    auto result = executer.topDbl() - rhs;
    checkDoubleOverflow(executer, result);
    executer.setTop(result);
}
コード例 #9
0
ファイル: mathoperators.cpp プロジェクト: thunder422/ibcx
void executeSubtractIntInt(Executer &executer)
{
    auto rhs = executer.topInt();
    executer.pop();
    auto result = int64_t{executer.topInt()};
    result -= rhs;
    checkIntegerOverflow(executer, result);
    executer.setTopIntFromInt64(result);
}
コード例 #10
0
ファイル: mathoperators.cpp プロジェクト: thunder422/ibcx
void executeCatStrTmp(Executer &executer)
{
    auto rhs_result = executer.topTmpStr();
    executer.pop();

    auto lhs_rhs = std::string{*executer.topStr()};
    std::swap(lhs_rhs, *rhs_result);

    executer.setTop(rhs_result);
    *executer.topTmpStr() += lhs_rhs;
}
コード例 #11
0
ファイル: logicoperators.cpp プロジェクト: thunder422/ibcx
void executeImp(Executer &executer)
{
    auto rhs = executer.topInt();
    executer.pop();
    executer.setTop(~executer.topInt() | rhs);
}
コード例 #12
0
ファイル: logicoperators.cpp プロジェクト: thunder422/ibcx
void executeEqv(Executer &executer)
{
    auto rhs = executer.topInt();
    executer.pop();
    executer.setTop(~(executer.topInt() ^ rhs));
}
コード例 #13
0
ファイル: logicoperators.cpp プロジェクト: thunder422/ibcx
void executeXor(Executer &executer)
{
    auto rhs = executer.topInt();
    executer.pop();
    executer.setTop(executer.topInt() ^ rhs);
}
コード例 #14
0
ファイル: logicoperators.cpp プロジェクト: thunder422/ibcx
void executeAnd(Executer &executer)
{
    auto rhs = executer.topInt();
    executer.pop();
    executer.setTop(executer.topInt() & rhs);
}
コード例 #15
0
ファイル: mathoperators.cpp プロジェクト: thunder422/ibcx
void executeAddDblInt(Executer &executer)
{
    auto rhs = executer.topIntAsDbl();
    executer.pop();
    executer.setTop(executer.topDbl() + rhs);
}
コード例 #16
0
ファイル: mathoperators.cpp プロジェクト: thunder422/ibcx
void executeSubtractDblInt(Executer &executer)
{
    auto rhs = executer.topIntAsDbl();
    executer.pop();
    executer.setTop(executer.topDbl() - rhs);
}
コード例 #17
0
ファイル: mathoperators.cpp プロジェクト: thunder422/ibcx
inline void doDoubleMultiply(Executer &executer, double rhs)
{
    executer.pop();
    auto lhs = executer.topDbl();
    multiplyAndCheckResult(executer, lhs, rhs);
}