MCPcopy Create free account
hub / github.com/AppleWin/AppleWin / ArgsCook

Function ArgsCook

source/Debugger/Debugger_Parser.cpp:457–796  ·  view source on GitHub ↗

@param nArgs Number of raw args. Note: The number of args can be changed via: address1,length Length address1:address2 Range address1+delta Delta address1-delta Delta //=========================================================================== */

Source from the content-addressed store, hash-verified

455 address1-delta Delta
456//=========================================================================== */
457int ArgsCook ( const int nArgs )
458{
459 const int BASE = 16; // hex
460 char *pSrc = NULL;
461 char *pEnd2 = NULL;
462
463 int nArg = nArgs;
464 int iArg = 1;
465 Arg_t *pArg = NULL;
466 Arg_t *pPrev = NULL;
467 Arg_t *pNext = NULL;
468
469 WORD nAddressArg;
470 WORD nAddressRHS;
471 WORD nAddressSym;
472 WORD nAddressVal;
473 int nParamLen = 0;
474 int nArgsLeft = 0;
475
476 int nParenL = 0;
477 int nParenR = 0;
478
479 while (iArg <= nArg)
480 {
481 pArg = & (g_aArgs[ iArg ]);
482 pSrc = & (pArg->sArg[ 0 ]);
483
484 if (pArg->eToken == TOKEN_DOLLAR) // address
485 {
486// TODO: Need to flag was a DOLLAR token for assembler
487 pNext = NULL;
488
489 nArgsLeft = (nArg - iArg);
490 if (nArgsLeft > 0)
491 {
492 pNext = pArg + 1;
493
494 _Arg_Shift( iArg + 1, nArgs, iArg );
495 nArg--;
496 iArg--; // inc for start of next loop
497
498 // Don't do register lookup
499 pArg->bType |= TYPE_NO_REG;
500 }
501 else
502 {
503 return ARG_SYNTAX_ERROR;
504 }
505 }
506
507 if (pArg->bType & TYPE_OPERATOR) // prev op type == address?
508 {
509 pPrev = NULL; // pLHS
510 pNext = NULL; // pRHS
511 nParamLen = 0;
512
513 if (pArg->eToken == TOKEN_HASH) // HASH # immediate
514 nParamLen = 1;

Callers 1

ExecuteCommandFunction · 0.85

Calls 6

_Arg_ShiftFunction · 0.85
ArgsGetImmediateValueFunction · 0.85
ArgsGetRegisterValueFunction · 0.85
ReadWordFromMemoryFunction · 0.85
ArgsGetValueFunction · 0.70
FindAddressFromSymbolFunction · 0.70

Tested by

no test coverage detected