默认情况下,less只能查看文本,如果是二进制文件,就会显示乱码。
$ less hello.bc "hello.bc" may be a binary file. See it anyway?
然而稍加配置,即可让less显示其对应的文本文件。
首先在~/.bashrc文件里增加一行
eval "$(lesspipe)"
打开新的终端窗口,即可查看各种压缩文件、PDF文件,甚至能够查看图片和ISO的metadata!(具体参加man lesspipe)
通过~/.lessfilter文件可以扩展lesspipe,显示LLVM bc文件(以及spirv文件)。
$ cat ~/.lessfilter
#!/bin/sh
case "$1" in
*.bc)
llvm-dis "$1" -o -
;;
*.spv)
spirv-dis "$1" --raw-id --no-color
;;
*)
# We don't handle this format.
exit 1
esac
# No further processing by lesspipe necessary
exit 0
使用Emacs,不仅可以直接打开二进制文件查看其文本形式,而且可以修改,并在保存时更新原二进制文件。配置如下:
(require 'jka-compr)
(require 'llvm-mode)
;;; bc
(add-to-list 'jka-compr-compression-info-list
'["\\.bc\\'"
"Assembling BC" "llvm-as" nil
"Disassembling BC" "llvm-dis" ("-o" "-")
t nil "BC"])
(add-to-list 'auto-mode-alist '("\\.bc\\'" . llvm-mode))
;;; spirv
(require 'asm-mode)
(add-to-list 'jka-compr-compression-info-list
'["\\.spv\\'"
"Assembling SPIRV" "spirv-as" ("-o" "-")
"Disassembling SPIRV" "spirv-dis" ("--no-color" "--raw-id")
t nil "\003\002\043\007"])
(add-to-list 'auto-mode-alist '("\\.spv\\'" . asm-mode))
(jka-compr-update)





