fix(cdb): A6.P1 — a6-probe.cdb v3 with C++ float reads
v2 dry-run produced correct hit counts but all %f field values printed as 0.000000 — including BP6 threshold which the decomp says must be 0.0871556997f (cos 85°). Root cause: cdb's MASM evaluator returns dwo(addr) as a 32-bit integer; .printf %f expects a 64-bit double; passing the integer to %f produces formatted-zero garbage. Fix: switch all float-reading expressions to @@c++(*(float*)addr). The C++ evaluator dereferences memory as a float pointer, returning a proper float that .printf %f formats correctly. Integer reads (%d) still use MASM dwo() — that works. For double-indirect (pointer args), the form is @@c++(*(float*)(*(unsigned int*)(@esp+N)+offset)) which reads the pointer at [esp+N], adds the offset, and treats the result as a float pointer. v2 capture preserved as retail-v2-zero-floats.log audit trail. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
7b9b26f647
commit
1b6d49ea57
2 changed files with 51463 additions and 37 deletions
File diff suppressed because it is too large
Load diff
Loading…
Add table
Add a link
Reference in a new issue