Chinaunix首页 | 论坛 | 博客
  • 博客访问: 505662
  • 博文数量: 184
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 1172
  • 用 户 组: 普通用户
  • 注册时间: 2016-06-21 13:40
个人简介

技术改变命运

文章分类

全部博文(184)

文章存档

2020年(16)

2017年(12)

2016年(156)

我的朋友

分类: LINUX

2016-08-01 10:23:09

A location expression is stored in a block of contiguous bytes.
The bytes form a set of operations.
Each location operation has a 1-byte code
that identifies that operation. Operations can be followed
by one or more bytes of additional data. All operations in a
location expression are concatenated from left to right.
The encodings for the operations in a location expression
are described in Figures 22 and 23.
Operation  Code No. of Operands Notes
DW_OP_addr  0x03 1 constant address (size target specific)
DW_OP_deref  0x06 0
DW_OP_const1u  0x08 1 1-byte constant
DW_OP_const1s  0x09 1 1-byte constant
DW_OP_const2u  0x0a 1 2-byte constant
DW_OP_const2s  0x0b 1 2-byte constant
DW_OP_const4u  0x0c 1 4-byte constant
DW_OP_const4s  0x0d 1 4-byte constant
DW_OP_const8u  0x0e 1 8-byte constant
DW_OP_const8s  0x0f 1 8-byte constant
DW_OP_constu  0x10 1 ULEB128 constant
DW_OP_consts  0x11 1 SLEB128 constant
DW_OP_dup  0x12 0
DW_OP_drop  0x13 0
DW_OP_over  0x14 0
DW_OP_pick  0x15 1 1-byte stack index
DW_OP_swap  0x16 0
DW_OP_rot  0x17 0
DW_OP_xderef  0x18 0
DW_OP_abs  0x19 0
DW_OP_and  0x1a 0
DW_OP_div  0x1b 0
DW_OP_minus  0x1c 0
DW_OP_mod  0x1d 0
DW_OP_mul  0x1e 0
DW_OP_neg  0x1f 0
DW_OP_not  0x20 0
DW_OP_or  0x21 0
DW_OP_plus  0x22 0
DW_OP_plus_uconst  0x23 1 ULEB128 addend
DW_OP_shl  0x24 0
DW_OP_shr  0x25 0
DW_OP_shra  0x26 0
Figure 22. Location operation encodings, part 1
Revision: 2.0.0 Page 103 July 27, 1993
Industry Review Draft
DWARF Debugging Information Format
Operation  Code No. of Operands Notes
DW_OP_xor  0x27 0
DW_OP_skip  0x2f 1 signed 2-byte constant
DW_OP_bra  0x28 1 signed 2-byte constant
DW_OP_eq  0x29 0
DW_OP_ge  0x2a 0
DW_OP_gt  0x2b 0
DW_OP_le  0x2c 0
DW_OP_lt  0x2d 0
DW_OP_ne  0x2e 0
DW_OP_lit0  0x30 0 literals 0..31 = (DW_OP_LIT0|literal)
DW_OP_lit1  0x31 0
...
DW_OP_lit31  0x4f 0
DW_OP_reg0  0x50 0 reg 0..31 = (DW_OP_REG0|regnum)
DW_OP_reg1  0x51 0
...
DW_OP_reg31  0x6f 0
DW_OP_breg0  0x70 1 SLEB128 offset
DW_OP_breg1  0x71 1 base reg 0..31 = (DW_OP_BREG0|regnum)
...
DW_OP_breg31  0x8f 1
DW_OP_regx  0x90 1 ULEB128 register
DW_OP_fbreg  0x91 1 SLEB128 offset
DW_OP_bregx  0x92 2 ULEB128 register followed by SLEB128 offset
DW_OP_piece  0x93 1 ULEB128 size of piece addressed
DW_OP_deref_size  0x94 1 1-byte size of data retrieved
DW_OP_xderef_size  0x95 1 1-byte size of data retrieved
DW_OP_nop  0x96 0
DW_OP_lo_user  0xe0
DW_OP_hi_user  0xff
Figure 23. Location operation encodings, part 2
7.7.2 Location Lists
Each entry in a location list consists of two relative addresses
followed by a 2-byte length, followed by a block of contiguous
bytes. The length specifies the number of bytes in the block
that follows. The two addresses are the same size as used by
DW_FORM_addr
on the target machine.
阅读(1165) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~