@PcodeUserop
	@EmuSyscall("write")
	public void demo_write(@OpExecutor PcodeExecutor<byte[]> executor, byte[] str, byte[] end) {
		AddressSpace space = machine.getLanguage().getDefaultSpace();
		/**
		 * Because we have concrete {@code byte[]}, we could use Utils.bytesToLong, but for
		 * demonstration, here's how it can be done if we extended
		 * {@link AnnotatedEmuSyscallUseropLibrary}{@code <T>} instead. If the value cannot be made
		 * concrete, an exception will be thrown. For abstract types, it's a good idea to save a
		 * copy of the arithmetic as a field at library construction time.
		 */
		PcodeArithmetic<byte[]> arithmetic = machine.getArithmetic();
		long strLong = arithmetic.toLong(str, Purpose.LOAD);
		long endLong = arithmetic.toLong(end, Purpose.OTHER);

		byte[] stringBytes = machine.getSharedState()
				.getVar(space, strLong, (int) (endLong - strLong), true, executor.getReason());
		String string = new String(stringBytes, UTF8);
		script.println(string);
	}
Write a buffer of utf-8 characters to the console

<p>
The {@link EmuSyscall} annotation allows us to specify the system call name, because the
userop name should be prefixed with the platform name, to avoid naming collisions among
composed libraries.

<p>
For demonstration, we will export this as a system call, though that is not required for
{@link DemoStructuredPart#demo_console(StructuredSleigh.Var)} to invoke it. It does need to
be a userop, but it doesn't need to be a syscall.

@param str a pointer to the start of the buffer
@param end a pointer to the end (exclusive) of the buffer
Ghidra/Features/SystemEmulation/ghidra_scripts/DemoSyscallLibrary.java