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
相关文章
|
6月前
|
算法 异构计算
m基于FPGA的电子钟verilog实现,可设置闹钟,包含testbench测试文件
该文介绍了基于FPGA的电子钟设计,利用Vivado2019.2平台进行开发并展示测试结果。电子钟设计采用Verilog硬件描述语言,核心包括振荡器、分频器和计数器。时间显示为2个十进制格式,闹钟功能通过存储器和比较器实现,当当前时间等于设定时间时触发。文中给出了Verilog核心程序示例,展示了时钟信号、设置信号及输出的交互。
189 2
|
5月前
|
存储 数据采集 数据安全/隐私保护
使用STM32F103读取TF卡并模拟U盘:使用标准库实现
通过以上步骤,你可以实现用STM32F103将TF卡内容变成U盘进行读取。这种功能在数据采集、便携式存储设备等应用中非常有用。如果你有更多的需求,可以进一步扩展此项目,例如添加文件管理功能、加密存储等。希望这篇博客能帮到你,如果有任何问题,欢迎在评论区留言讨论!
205 1
【单片机】简单的自定义延时程序设计(代码演示)
【单片机】简单的自定义延时程序设计(代码演示)
|
6月前
|
API 区块链 C++
MFC编程 -- 从空项目开始到实现计算器功能
MFC编程 -- 从空项目开始到实现计算器功能
38 1
|
存储 编译器 C语言
支持硬件输入输出的IN指令和OUT指令及测试输入和输出程序
支持硬件输入输出的IN指令和OUT指令及测试输入和输出程序
177 0
|
芯片
具体单板的按键驱动程序(查询方式)-以IMX6ull单板为例子
具体单板的按键驱动程序(查询方式)-以IMX6ull单板为例子
97 0
【STC15单片机】模拟I2C操作AT24C02数据读取,PCF8591的A/D转换代码
【STC15单片机】模拟I2C操作AT24C02数据读取,PCF8591的A/D转换代码
290 0
|
存储 文件存储
消息窗体的输入输出,断点调试方法【VB学习笔记2020课堂版02】
消息窗体的输入输出,断点调试方法【VB学习笔记2020课堂版02】
消息窗体的输入输出,断点调试方法【VB学习笔记2020课堂版02】
STM32:输入捕获模式测频率和占空比(内置1.实物图+2.代码部分/注释)
STM32:输入捕获模式测频率和占空比(内置1.实物图+2.代码部分/注释)
472 0
STM32:输入捕获模式测频率和占空比(内置1.实物图+2.代码部分/注释)
STM32:TIM输入捕获模式测频率并在OLED上显示频率(内含:1.接线图/实物图+2.代码部分+3.输入捕获模式使用到的STM32库函数)
STM32:TIM输入捕获模式测频率并在OLED上显示频率(内含:1.接线图/实物图+2.代码部分+3.输入捕获模式使用到的STM32库函数)
443 0
STM32:TIM输入捕获模式测频率并在OLED上显示频率(内含:1.接线图/实物图+2.代码部分+3.输入捕获模式使用到的STM32库函数)