Lephenixnoir
0ffc5f38f6
af, afs: mark project dirty on creation, not analysis
2024-01-15 18:57:36 +01:00
Lephenixnoir
51ee6fd6ff
af, afs: add recursive function search option (-r)
2024-01-11 20:03:11 +01:00
Lephenixnoir
64a3df8e17
fxos: faster project loading through functions
...
- Compute analysis on-demand
- Faster function exploration, due to:
* Cache basic block's index in function
* Preallocate memory for 4 blocks per function
* Preallocate 32 instructions per superblock
* Assume functions do not cross vspace region boundaries
* Improve cutSuperblockAt() with lower-level code
2024-01-11 12:42:15 +01:00
Lephenixnoir
80d6001417
fxos: save binary objects (currently functions) in project
2024-01-08 21:10:12 +01:00
Lephenixnoir
f5ad03152d
fxos: internalize assembly tables, for real this time
2024-01-07 19:35:10 +01:00
Lephenixnoir
944745d0e3
fxos: print call targets in [d -a]
2023-11-29 17:33:44 +01:00
Lephenixnoir
ed902db2d8
fxos: first useful analysis + quite a few cleanups
2023-11-29 16:33:14 +01:00
Lephenixnoir
c299a5f1b6
fxos: print (still WIP) analysis results
...
Looking good.
2023-11-14 01:19:46 +01:00
Lephenixnoir
ff2e9c2072
fxos: prototype analysis, C++20 views
2023-11-13 23:43:48 +01:00
Lephenixnoir
d65515b9ad
fxos: replace function analysis with new objects
...
This affects ad and ads, which are now called af (Analysis: Functions)
and afs, and produce binary objects instead of entries in the soon-to-
be-removed disassembly.
2023-11-05 19:57:59 +01:00
Lephenixnoir
7f2fc40ac6
fxos: replace parts of base library with syscall defs
...
These are not used yet to create functions and are just visible in isc.
2023-11-05 19:57:58 +01:00
Lephenixnoir
9ed14e9fa7
fxos: remove now-unused old "symbols" storage
...
This is being replaced by:
- Binary objects for functions, variables, etc. (WIP)
- Hardcoded tables for syscalls and their prototypes. (TODO)
2023-11-04 11:14:03 +01:00
Lephenixnoir
1df2a14c06
fxos: assembly visualization for new functions
2023-11-04 11:05:22 +01:00
Lephenixnoir
6b4a122866
fxos: new function interface + cfg construction, to be tested
2023-10-07 22:54:30 +02:00
Lephenixnoir
f2c1ce50fe
fxos: binary-based passes, print pass -> basic asm view
2023-10-07 12:36:30 +02:00
Lephenixnoir
b7569df076
shell: merge bc/brm into bs, add binary renaming
2023-09-25 22:39:58 +02:00
Lephenixnoir
b0911cb092
shell: merge ibs into ib -a
2023-09-25 21:36:35 +02:00
Lephenixnoir
dffc3c7b02
shell: go back to unix shell-like options
2023-09-25 21:36:25 +02:00
Lephenixnoir
2a3f1845de
fxos: remove vspace as a session abstraction
...
And rewrite all existing commands to read from a binary instead.
The transition to the new data model is *not* complete because a bunch
of data is still hidden in the "Disassembly" inside the binary's virtual
space instead of being managed by the binary itself. Removing these is
the next step.
2023-09-24 20:52:37 +02:00
Lephenixnoir
fcdcdba423
fxos: create, select, remove, save and load binaries
...
This includes migrating them from legacy vspaces, which currently
migrates the bindings but not the symbol definitions.
2023-09-24 16:37:08 +02:00
Lephenixnoir
0c52cfca27
shell: load fxosrc files into flat legacy vspace info
2023-09-23 22:50:35 +02:00
Lephenixnoir
12d41ac823
shell: refactor main loop
2023-09-23 21:36:14 +02:00
Lephenixnoir
356d09e52d
fxos: add new project logic (without any data in them)
...
Projects are now created, saved, reloaded. Next step is to provide the
pm command to migrate old vspaces to them, and then start getting rid of
the old abstractions.
2023-09-23 20:21:08 +02:00
Lephenixnoir
c0820b59f0
fxos: refactor AbstractMemory into <fxos/vspace.h>
2023-09-16 11:49:56 +02:00
Lephenixnoir
a4cda4cb66
fxos: rename Function -> OldFunction
...
This prepares the introduction of a new program model different enough
from the original that I'd rather build it on the side than
progressively update the current one.
2023-09-03 19:20:45 +02:00
Lephenixnoir
6406f05eb2
shell: fix crash for commands without a long description
2023-09-03 19:03:48 +02:00
Lephenixnoir
61c3714404
shell: fix syntax error + autocompletion exception
...
Somehow there were two types of syntax errors, and the autocompletion
code was not catching the correct one.
2023-08-23 16:20:29 +02:00
Lephenixnoir
0373ae50fe
_ic: also print claims owned by provided address
2023-08-20 20:27:52 +02:00
Lephenixnoir
2dbd910379
fxos, _if: add insufficient call analysis
...
We look for constants in call instruction parameters, but this only
works for jsr because the register argument in [jmp @rn] is not known to
be a constant yet (some static analysis required).
2023-08-20 20:23:30 +02:00
Lephenixnoir
df4bba2c1a
fxos: analyze pcrel in cfg (for future call analysis)
...
This will not cover advanced stuff that relies on static analysis, but
we don't care at the moment.
2023-08-20 19:42:06 +02:00
Lephenixnoir
12e6cd45a4
_am: add search for OS main menu function
2023-08-20 18:52:34 +02:00
Lephenixnoir
0f23fec85d
shell: fix double syntax errors aborting program
...
Type e.g. "e 1 + 2 * 3". The first "+" throws a syntax error
(parentheses are needed around expressions) and the "*" another one
during the final exhaust_until_separator phase, which wasn't protected
by a try/catch.
2023-08-20 18:31:30 +02:00
Lephenixnoir
97029d4f3e
clang-format and other minor changes
2023-08-20 17:54:03 +02:00
Dr-Carlos
b494a30404
_is: add sort option
2022-12-23 07:11:16 +11:00
Dr-Carlos
f16ecc370c
_e: print large demical representations correctly
2022-12-22 09:58:52 +11:00
Dr-Carlos
5a3de5aa17
Allow building fxos with Clang
2022-12-20 15:33:29 +10:30
Dr-Carlos
111620a649
_d: determine address or range in _d
2022-12-18 07:22:09 +10:30
Dr-Carlos
c66ae1d5c6
_d: use expr_or_range to allow addresses or ranges
2022-12-17 20:37:56 +10:30
Dr-Carlos
2f2e4bb1d5
shell: provide parser with expr_or_range() function
2022-12-17 20:37:56 +10:30
Dr-Carlos
1082c451d2
Remove _dr and add token options to atom and expr
2022-12-17 20:37:56 +10:30
Lephenixnoir
a277a4ffad
lexer: only allow one leading dot in symbols to avoid clash with ..
...
The latter is used for ranges. Previously 0..Bdisp_PutDisp_DD would
parse as 0 then the symbol `..Bdisp_PutDisp_DD`.
2022-12-08 17:46:41 +01:00
Dr-Carlos
ae8ed1fcdd
_isc: print syscall to 4 hex digits
2022-12-05 12:19:38 +10:30
Dr-Carlos
0e6cec0821
Print all syscalls to 4 hex figures
2022-12-04 21:15:25 +10:30
Dr-Carlos
dd09f9a71d
_is: use optional, use FxOS log instead of fmt
2022-12-04 20:44:44 +10:30
Dr-Carlos
31406efc13
_is: info for specific symbols and vspace option
2022-12-04 14:34:43 +10:30
Dr-Carlos
3308f72773
_isc: sort specific addresses if required
2022-04-19 21:51:27 +09:30
Dr-Carlos
771b12eab8
_isc: resolve vspace when parsing and misc fixes
2022-04-19 21:21:21 +09:30
Dr-Carlos
08c000539c
_isc: use os->syscall_at instead of remove_if
2022-04-19 07:32:09 +09:30
Dr-Carlos
e037d5889c
_isc: print instead of throwing error
2022-04-19 07:13:07 +09:30
Dr-Carlos
86300fc1c7
_isc: add positional arg to specify printed info
2022-04-19 07:13:07 +09:30