crash —— 自带的计算器和转换器

简介: crash —— 自带的计算器和转换器

crash提供了eval命令,实现了一些很好用的功能,下面学习一下。

格式:

eval [-b][-l] (表达式) | 值

支持的运算符:+ - & | ^ * % / << >>

下面是需要注意的:

  1. 括号并不是必须的,但是如果使用了|<<或者>>,那么需要使用括号
crash> eval (1 << 32)
hexadecimal: 100000000  (4GB)
decimal: 4294967296
octal: 40000000000
binary: 0000000000000000000000000000000100000000000000000000000000000000
  1. 传给eval的值可以是数字(10进制或者16进制),也可以符号,比如如果传入函数名或者全局变量名,返回函数或者全局变量的地址。
crash> eval panic_on_oops
hexadecimal: ffffffff844c3dc4
    decimal: 18446744071634173380  (-2075378236)
      octal: 1777777777760423036704
     binary: 1111111111111111111111111111111110000100010011000011110111000100
crash>
crash> rd panic_on_oops
ffffffff844c3dc4:  0000000000000001                    ........
  1. 如果传给eval的值是16进制,0x并不是必须的,比如有a~f
crash> eval 10
hexadecimal: a
    decimal: 10
      octal: 12
     binary: 0000000000000000000000000000000000000000000000000000000000001010
crash> eval 0x10
hexadecimal: 10
    decimal: 16
      octal: 20
     binary: 0000000000000000000000000000000000000000000000000000000000010000
crash> eval 1a
hexadecimal: 1a
    decimal: 26
      octal: 32
     binary: 0000000000000000000000000000000000000000000000000000000000011010
crash> eval 0x1a
hexadecimal: 1a
    decimal: 26
      octal: 32
     binary: 0000000000000000000000000000000000000000000000000000000000011010
  1. 数字后面可以跟K/k M/m G/g,这里1K表示1024,1M表示10241024,1G表示10241024*1024
crash> eval 1k
hexadecimal: 400  (1KB)
    decimal: 1024
      octal: 2000
     binary: 0000000000000000000000000000000000000000000000000000010000000000
crash> eval 8*2k
hexadecimal: 4000  (16KB)
    decimal: 16384
      octal: 40000
     binary: 0000000000000000000000000000000000000000000000000100000000000000
crash> eval 0x10m
hexadecimal: 1000000  (16MB)
    decimal: 16777216
      octal: 100000000
     binary: 0000000000000000000000000000000000000001000000000000000000000000
crash> eval 1k*1k
hexadecimal: 100000  (1MB)
    decimal: 1048576
      octal: 4000000
     binary: 0000000000000000000000000000000000000000000100000000000000000000
crash> eval 1k*1G
hexadecimal: 10000000000  (1024GB)
    decimal: 1099511627776
      octal: 20000000000000
     binary: 0000000000000000000000010000000000000000000000000000000000000000
  1. 可以在数字前面使用~表示取反
crash> eval ~2
hexadecimal: fffffffffffffffd
    decimal: 18446744073709551613  (-3)
      octal: 1777777777777777777775
     binary: 1111111111111111111111111111111111111111111111111111111111111101
crash> eval ~a
hexadecimal: fffffffffffffff5
    decimal: 18446744073709551605  (-11)
      octal: 1777777777777777777765
     binary: 1111111111111111111111111111111111111111111111111111111111110101
  1. 查看负数的表示
crash> eval -1
hexadecimal: ffffffffffffffff
    decimal: 18446744073709551615  (-1)
      octal: 1777777777777777777777
     binary: 1111111111111111111111111111111111111111111111111111111111111111
crash> eval -a
hexadecimal: fffffffffffffff6
    decimal: 18446744073709551606  (-10)
      octal: 1777777777777777777766
     binary: 1111111111111111111111111111111111111111111111111111111111110110
  1. 如果需要按64位计算,那么可以在数字前面使用-l参数。但是如果本身传入数字就是64位的,那么就不用传-l如果是在64系统上,都是按64位计算,不需要传-l
  2. 有时我们想知道一个数字的那些位是1,那么需要在数字前面使用-b参数
crash> eval -b 0x5
hexadecimal: 5
    decimal: 5
      octal: 5
     binary: 0000000000000000000000000000000000000000000000000000000000000101
   bits set: 2 0
crash> eval -b 0xa5
hexadecimal: a5
    decimal: 165
      octal: 245
     binary: 0000000000000000000000000000000000000000000000000000000010100101
   bits set: 7 5 2 0
crash> eval -b  -1
hexadecimal: ffffffffffffffff
    decimal: 18446744073709551615  (-1)
      octal: 1777777777777777777777
     binary: 1111111111111111111111111111111111111111111111111111111111111111
   bits set: 63 62 61 60 59 58 57 56 55 54 53 52 51 50 49 48 47 46 45 44 43 42
             41 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 20
             19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
相关文章
|
7月前
|
芯片
【嵌入式开源库】使用J-Link打印日志,让你节省一个打印串口
【嵌入式开源库】使用J-Link打印日志,让你节省一个打印串口
244 0
|
物联网
STM32:TIM输入捕获硬件部分(内含:1.输入捕获简介+2.频率测量+3.通用/高级定时器的输入捕获电路分析(重点)+4.主从触发模式+5.输入捕获基本结构(重点)+6.PWM基本结构)
STM32:TIM输入捕获硬件部分(内含:1.输入捕获简介+2.频率测量+3.通用/高级定时器的输入捕获电路分析(重点)+4.主从触发模式+5.输入捕获基本结构(重点)+6.PWM基本结构)
543 0
STM32:TIM输入捕获硬件部分(内含:1.输入捕获简介+2.频率测量+3.通用/高级定时器的输入捕获电路分析(重点)+4.主从触发模式+5.输入捕获基本结构(重点)+6.PWM基本结构)
|
存储 算法 异构计算
m基于FPGA的数据串并并串转换系统verilog实现,包含testbench,可以配置并行数量
m基于FPGA的数据串并并串转换系统verilog实现,包含testbench,可以配置并行数量
380 0
|
算法 异构计算
基于FPGA的控制参数在线实时调整的自适应PI控制器设计,包含testbench测试程序
基于FPGA的控制参数在线实时调整的自适应PI控制器设计,包含testbench测试程序
225 0
|
算法 异构计算
通过状态机方法实现基于FPGA的维特比译码器,包含testbench测试文件
通过状态机方法实现基于FPGA的维特比译码器,包含testbench测试文件
164 0
|
芯片
具体单板的按键驱动程序(查询方式)-以IMX6ull单板为例子
具体单板的按键驱动程序(查询方式)-以IMX6ull单板为例子
101 0
【蓝桥杯嵌入式】STM32定时器的配置,解析预分频系数和重装载值与时钟频率的关系
【蓝桥杯嵌入式】STM32定时器的配置,解析预分频系数和重装载值与时钟频率的关系
1212 0
STM32:输入捕获模式测频率和占空比(内置1.实物图+2.代码部分/注释)
STM32:输入捕获模式测频率和占空比(内置1.实物图+2.代码部分/注释)
507 0
STM32:输入捕获模式测频率和占空比(内置1.实物图+2.代码部分/注释)
STM32:TIM输入捕获模式测频率并在OLED上显示频率(内含:1.接线图/实物图+2.代码部分+3.输入捕获模式使用到的STM32库函数)
STM32:TIM输入捕获模式测频率并在OLED上显示频率(内含:1.接线图/实物图+2.代码部分+3.输入捕获模式使用到的STM32库函数)
467 0
STM32:TIM输入捕获模式测频率并在OLED上显示频率(内含:1.接线图/实物图+2.代码部分+3.输入捕获模式使用到的STM32库函数)
STM32:定时器外部时钟软件代码部分(内含:1.实验现象如下+2.代码部分+3.注意事项)
STM32:定时器外部时钟软件代码部分(内含:1.实验现象如下+2.代码部分+3.注意事项)
255 0
STM32:定时器外部时钟软件代码部分(内含:1.实验现象如下+2.代码部分+3.注意事项)