=========================================================================== Pre: nArgs = last valid index into g_aArgs[]
| 1641 | //=========================================================================== |
| 1642 | // Pre: nArgs = last valid index into g_aArgs[] |
| 1643 | Update_t CmdBreakpointAddReg (const int nArgs) |
| 1644 | { |
| 1645 | if (! nArgs) |
| 1646 | { |
| 1647 | return Help_Arg_1( CMD_BREAKPOINT_ADD_REG ); |
| 1648 | } |
| 1649 | |
| 1650 | BreakpointSource_t iSrc = BP_SRC_REG_PC; |
| 1651 | BreakpointOperator_t iCmp = BP_OP_EQUAL ; |
| 1652 | |
| 1653 | bool bHaveSrc = false; |
| 1654 | bool bHaveCmp = false; |
| 1655 | |
| 1656 | int iParamSrc; |
| 1657 | int iParamCmp; |
| 1658 | |
| 1659 | int nFound; |
| 1660 | |
| 1661 | int iArg = 1; |
| 1662 | while (iArg <= nArgs) |
| 1663 | { |
| 1664 | char *sArg = g_aArgs[iArg].sArg; |
| 1665 | |
| 1666 | bHaveSrc = false; |
| 1667 | bHaveCmp = false; |
| 1668 | |
| 1669 | nFound = FindParam( sArg, MATCH_EXACT, iParamSrc, _PARAM_REGS_BEGIN, _PARAM_REGS_END ); |
| 1670 | if (nFound) |
| 1671 | { |
| 1672 | switch (iParamSrc) |
| 1673 | { |
| 1674 | case PARAM_REG_A : iSrc = BP_SRC_REG_A ; bHaveSrc = true; break; |
| 1675 | case PARAM_FLAGS : iSrc = BP_SRC_REG_P ; bHaveSrc = true; break; |
| 1676 | case PARAM_REG_X : iSrc = BP_SRC_REG_X ; bHaveSrc = true; break; |
| 1677 | case PARAM_REG_Y : iSrc = BP_SRC_REG_Y ; bHaveSrc = true; break; |
| 1678 | case PARAM_REG_PC: iSrc = BP_SRC_REG_PC; bHaveSrc = true; break; |
| 1679 | case PARAM_REG_SP: iSrc = BP_SRC_REG_S ; bHaveSrc = true; break; |
| 1680 | default: |
| 1681 | break; |
| 1682 | } |
| 1683 | } |
| 1684 | |
| 1685 | nFound = FindParam( sArg, MATCH_EXACT, iParamCmp, _PARAM_BREAKPOINT_BEGIN, _PARAM_BREAKPOINT_END ); |
| 1686 | if (nFound) |
| 1687 | { |
| 1688 | switch (iParamCmp) |
| 1689 | { |
| 1690 | case PARAM_BP_LESS_EQUAL : iCmp = BP_OP_LESS_EQUAL ; bHaveCmp = true; break; |
| 1691 | case PARAM_BP_LESS_THAN : iCmp = BP_OP_LESS_THAN ; bHaveCmp = true; break; |
| 1692 | case PARAM_BP_EQUAL : iCmp = BP_OP_EQUAL ; bHaveCmp = true; break; |
| 1693 | case PARAM_BP_NOT_EQUAL : iCmp = BP_OP_NOT_EQUAL ; bHaveCmp = true; break; |
| 1694 | case PARAM_BP_NOT_EQUAL_1 : iCmp = BP_OP_NOT_EQUAL ; bHaveCmp = true; break; |
| 1695 | case PARAM_BP_GREATER_THAN : iCmp = BP_OP_GREATER_THAN ; bHaveCmp = true; break; |
| 1696 | case PARAM_BP_GREATER_EQUAL: iCmp = BP_OP_GREATER_EQUAL; bHaveCmp = true; break; |
| 1697 | default: |
| 1698 | break; |
| 1699 | } |
| 1700 | } |
no test coverage detected