Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Improve interactive mode #30

Closed
jabraham17 opened this issue Feb 13, 2023 · 7 comments · Fixed by #90
Closed

Improve interactive mode #30

jabraham17 opened this issue Feb 13, 2023 · 7 comments · Fixed by #90
Labels
enhancement New feature or request feature: ishell

Comments

@jabraham17
Copy link
Owner

Interactive mode is currently very rudimentary and hacked on top, should explore better first-class support

Should function similar to gdb with the command line kicking into interactive mode after a trigger or starting in interactive with something like -i

support single stepping, breakpoints, ebreaks, etc

@jabraham17
Copy link
Owner Author

After some rumination, this is going to involve a lot and requires a lot of design work. Deprioritizing it for now to work on other things, namely documentation and tests

@jabraham17
Copy link
Owner Author

More design thoughts

pause should execute immediately, it should be installed as a callback
dump should execute immediately unless specified

Essentially, need a way to differentiate between installing callbacks on an event(s) and calling the function immediately. Some, like pause, only make sense as a callback. Some, like single stepping, only make sense immediately. But others like dump would be valid in both contexts.

I like the idea of a modifier that can be applied to any keyword, something like keyword/MODIFIER. Then someone could write dump/i for immediate execution and dump/d for delayed. Definitely a temporary syntax, but would add a nice synergy with #51. It would be a semantic error to use an invalid modifier for a keyword (pause/d would be a semantic error). I could pick a reasonable default modifier, for the interactive shell default would be instant, while for the cli it would be delayed (as immediate doesn't make sense).

As a side note with #51, multiple modifiers could be chained as keyword/MOD/MOD/....

Right now the -control command line option and the interactive mode share a parser and actions. I like this syntax, as it adds some nice symmetry. But it doesn't make sense to execute commands immediately from the command line. Maybe a way around this is to use the same parser/grammar, but only enable a limited subset to the cli.

@jabraham17
Copy link
Owner Author

add ability to modify registers and memory

@jabraham17
Copy link
Owner Author

Instead of adding new syntax, I could reuse the old one. If on is specified, then define it as a callback. If no on, then execute it immediately. In the CLI, where only callbacks are supported, support a default on statement (the current implemention)

@jabraham17
Copy link
Owner Author

Add support to print ranges of registers, or even whole register classes at once

@jabraham17
Copy link
Owner Author

This was unfortunately not full completed

@jabraham17
Copy link
Owner Author

subsumed by #92

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request feature: ishell
Projects
None yet
Development

Successfully merging a pull request may close this issue.

1 participant