public Map<Register, byte[]> getRegisterValues(List<Register> registers) {
		Map<Register, byte[]> result = new HashMap<>();
		for (Register reg : registers) {
			long min = reg.getAddress().getOffset();
			long max = min + reg.getNumBytes();
			if (!bytes.isInitialized(min, max)) {
				continue;
			}
			byte[] data = new byte[reg.getNumBytes()];
			bytes.getData(min, data);
			result.put(reg, data);
		}
		return result;
	}
The callers may be reading ahead, so it's not appropriate to throw an exception here.
Instead, communicate there's no more. If the buffer's empty on their end, they'll
handle the error as appropriate. If it's in the emulator, the instruction decoder
should eventually throw the decode exception.
Ghidra/Framework/Emulation/src/main/java/ghidra/pcode/exec/BytesPcodeExecutorStateSpace.java