papyrus-lang icon indicating copy to clipboard operation
papyrus-lang copied to clipboard

When debugging, pause only on meaningful operations.

Open joelday opened this issue 6 years ago • 3 comments

Currently pausing at the instruction level, but should instead do so at the expression evaluation level or simply where operators and member access are ignored.

For opcode reference: https://github.com/Orvid/Champollion/blob/master/Pex/Instruction.cpp

joelday avatar Jun 22 '19 16:06 joelday

I've commented out the codes I think we should ignore.

static const OpCodeInfo OPCODES[Pex::OpCode::MAX_OPCODE] = {
//    {"nop", 0, false},
//    {"iadd", 3, false},
//    {"fadd", 3, false},
//    {"isub", 3, false},
//    {"fsub", 3, false},
//    {"imul", 3, false},
//    {"fmul", 3, false},
//    {"idiv", 3, false},
//    {"fdiv", 3, false},
//    {"imod", 3, false},
//    {"not",  2, false},
//    {"ineg", 2, false},
//    {"fneg", 2, false},
    {"assign", 2, false},
    {"cast", 2, false},
//    {"cmp_eq", 3, false},
//    {"cmp_lt", 3, false},
//    {"cmp_lte", 3, false},
//    {"cmp_gt", 3, false},
//    {"comp_gte", 3, false},
//    {"jmp", 1, false},
//    {"jmpt", 2, false},
//    {"jmpf", 2, false},
    {"callmethod", 3, true},
    {"callparent", 2, true},
    {"callstatic", 3, true},
    {"return", 1, false},
//    {"strcat", 3, false},
    {"propget", 3, false},
    {"propset", 3, false},
    {"array_create", 2, false},
//    {"array_length", 2, false},
    {"array_getlement", 3, false},
    {"array_setelement", 3, false},
    {"array_findelement", 4, false},
    {"array_rfindelement", 4, false},
//    {"is", 3, false},
    {"struct_create", 1, false},
//    {"struct_get", 3, false},
//    {"struct_set", 3, false},
    {"array_findstruct", 5, false},
    {"array_rfindstruct", 5, false},
    {"array_add", 3, false},
    {"array_insert", 3, false},
    {"array_removelast", 1, false},
    {"array_remove", 3, false},
    {"array_clear", 1, false}
};

joelday avatar Jun 22 '19 17:06 joelday

I overheard this is about half done. It just needs some line history tracking from what I read in discord chat.

Scrivener07 avatar Jun 25 '19 04:06 Scrivener07

This is a little bit tricky because the logic for what should be paused on can depend on a sequence of operations. Will just need to come back to this at some point.

joelday avatar Nov 07 '19 03:11 joelday