Wikipediaのbzip2圧縮アルゴリズムの一部を読んだので意訳して紹介します。  参考にしたソースコードは bzip2-1.0.6 です。   Wikipedia  https://en.wikipedia.org/wiki/Bzip2#Initial_run-length_encoding   bzip2 ソースコード  https://github.com/junkawa/bzip2/tree/master/bzip2-1.0.6    概要  bzip2では、入力データを読み込んだ時( copy_input_until_stop()@bzlib.c  → ADD_CHAR_TO_BLOCK()  → add_pair_to_block() ) に ランレングス符号化 を行う。    Wikipedia   Any sequence of 4 to 255 consecutive duplicate symbols is replaced by the first four symbols and a repeat length between 0 and 251.    4〜255回、同じシンボルが連続した場合、「最初の4シンボル+残りの繰り返し回数」に置き換わる。    Thus the sequence "AAAAAAABBBBCCCD" is replaced with "AAAA\3BBBB\0CCCD", where "\3" and "\0" represent byte values 3 and 0 respectively.   "AAAAAAABBBBCCCD"は、"AAAA\3BBBB\0CCCD"に置き換わる。  AAAAAAA (Aが7回)は、最初の4シンボル(AAAA) + 残りの繰り返し回数(3)となる。  BBBB (Bが4回)は、最初の4シンボル(BBBB) + 残りの繰り返し回数(0)となる。  C,Dは連続回数が4回に達しないのでそのままとなる。   ここでは分かりやすさのため、A,B,Cというシンボルを使っているが、実際のbzip2では1シンボルは1バイト(0〜255の値)。 したがって、シンボル7...
この記事で関係するターゲット    linker.cmd ターゲット  [zephyr_base]/Makefile   linker.cmd: $(zephyr-deps)         $(Q)$(CC) -x assembler-with-cpp -nostdinc -undef -E -P \         $(LDFLAG_LINKERCMD) $(LD_TOOLCHAIN) -I$(srctree)/include \         -I$(objtree)/include/generated $(EXTRA_LINKER_CMD_OPT) $(KBUILD_LDS) -o $@   $(zephyr-deps)  TODO  $(Q)  [zephyr_base]/Makefile   ifeq ("$(origin V)", "command line")   KBUILD_VERBOSE = $(V) endif ifndef KBUILD_VERBOSE   KBUILD_VERBOSE = 0 endif  ifeq ($(KBUILD_VERBOSE),1)   quiet =   Q = else   quiet=quiet_   Q = @ endif ... export quiet Q KBUILD_VERBOSE  make V=1 などとすると、環境変数 Q は"" となる(or 未定義?)。それ以外では、Q は @ となる。  $(Q)$(CC) が gcc となる場合、実行する gcc ... というコマンドが表示されるが、@gcc となる場合、コマンドは表示されない。  5.2 Recipe Echoing  参照。  $(CC)  前の記事  参照。  $(LDFLAG_LINKERCMD)  未定義  $(LD_TOOLCHAIN)  [zephyr_base]/Makefile   LD_TOOLCHAIN ?= -D__GCC_LINKER_CMD__  LD_TOOLCHAIN が未定義の場合、-D__GCC_LINKER_CMD__ とする。  $(srctree)  [zephyr_base]/Makefile   ifeq ($(KBUILD_...