matsp: Yes, yes, I know. I was using POP CS as an ideological thing (IIRC I wanted to use that particular instruction when I was playing about with assembler a few months ago and was outraged to find that I couldn't! :().
I've looked at the RET thing and could feasibly track those as well, although this would start to get to the point where I'd be generating exceptions every few instructions, hmm :o
Sebastiani: Aha, but seeing as this is my own executable format, what say I specify that the code pages cannot contain any data? I expect to be able to identify each and every byte as an instruction or part of an instruction and if I can't... well, the code won't be run. ;)
This avoids the whole halting problem as far as the scanner is concerned. All it needs to know is the size of all instructions.
I suppose that my idea is effectively a VM with the processing for free (the code itself is already native, but the resources involved aren't).