public List<GnuDisassembledInstruction> getBlockDisassembly(Language lang, Address blockAddr,
			int blockSizeFactor, ByteProvider byteProvider) throws Exception {

		GdisConfig gdisConfig = checkLanguage(lang);
		if (gdisConfig == null || gdisConfig.architecture == UNSUPPORTED) {
			return null;
		}

		if (blockSizeFactor < 0 || blockSizeFactor > 8) {
			throw new IllegalArgumentException("blockSizeFactor must be > 0 and <= 8");
		}
		int blockSize = pow2(blockSizeFactor);

		if ((blockAddr.getOffset() & -blockSize) != blockAddr.getOffset()) {
			throw new IllegalArgumentException("Address must be block aligned");
		}

		long addressOffset = blockAddr.getAddressableWordOffset();
		String address = "0x" + Long.toHexString(addressOffset);

		// for aligned languages, don't try on non-aligned block addr/size.
		int alignment = lang.getInstructionAlignment();
		if (blockAddr.getOffset() % alignment != 0) {
			throw new IllegalArgumentException(
				"Address does not satisfy instruction alignment constraint: " + alignment);
		}

		String bytes = getBytes(byteProvider, blockSize);

		return runDisassembler(gdisConfig, address, bytes, EMPTY_DISASSEMBLER_OPTIONS);
	}
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