private boolean setupDisassembler(GdisConfig gdisConfig) {

		if (disassemblerProcess != null) {
			disassemblerProcess.destroy();
			disassemblerProcess = null;
			outputWriter = null;
			buffReader = null;
		}

		this.currentConfig = gdisConfig;
		hadFailure = false;

		String endianString = gdisConfig.isBigEndian ? "0x00" : "0x01"; // 0x0 is big, 0x1 is little endian

		// NOTE: valid target must be specified but has no effect on results
		String cmds[] = { gdisConfig.gdisExecFile.getAbsolutePath(), "pef", gdisConfig.architecture,
			gdisConfig.machineId, endianString, "0x0",
			gdisDataDirectory.getAbsolutePath() + File.separator,
			GNUExternalDisassembler.READ_FROM_STDIN_PARAMETER };

		StringBuilder buf = new StringBuilder();
		for (String str : cmds) {
			boolean addQuotes = str.indexOf(' ') >= 0;
			if (addQuotes) {
				buf.append('\"');
			}
			buf.append(str);
			if (addQuotes) {
				buf.append('\"');
			}
			buf.append(' ');
		}
		Msg.debug(this, "Starting gdis: " + buf.toString());

		try {
			Runtime rt = Runtime.getRuntime();
			disassemblerProcess = rt.exec(cmds, null, gdisConfig.gdisExecFile.getParentFile());
		}
		catch (IOException e) {
			buf = new StringBuilder();
			for (String arg : cmds) {
				buf.append("\"");
				buf.append(arg);
				buf.append("\" ");
			}
			Msg.debug(this, "GNU Disassembly setup failed, exec command: " + buf);
			Msg.showError(this, null, "GNU Disassembler Error",
				"Disassembler setup execution error: " + e.getMessage(), e);
			hadFailure = true;
			return false;
		}
		return true;
	}
Get detailed instruction list for a block of instructions.

@param lang
           processor language (corresponding LanguageID must be defined
           within LanguageMap.txt)
@param blockAddr
           start of block ( must be true: (offset & -(2^blockSizeFactor)
           == offset)
@param blockSizeFactor
           the block size factor where blockSize = 2^blockSizeFactor
           (must be > 0)
@param byteProvider
           provider for block of bytes to be disassembled starting at
           offset 0
@return list of instructions or null if language not supported by GNU
        Disassembler
@throws Exception
Ghidra/Extensions/SleighDevTools/src/main/java/ghidra/app/util/disassemble/GNUExternalDisassembler.java