当前位置: 首页>>代码示例>>Golang>>正文


Golang util.DecodeULEB128函数代码示例

本文整理汇总了Golang中github.com/derekparker/delve/dwarf/util.DecodeULEB128函数的典型用法代码示例。如果您正苦于以下问题:Golang DecodeULEB128函数的具体用法?Golang DecodeULEB128怎么用?Golang DecodeULEB128使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。


在下文中一共展示了DecodeULEB128函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。

示例1: defcfa

func defcfa(frame *FrameContext) {
	reg, _ := util.DecodeULEB128(frame.buf)
	offset, _ := util.DecodeULEB128(frame.buf)

	frame.cfa.register = reg
	frame.cfa.offset = int64(offset)
}
开发者ID:RJAugust,项目名称:delve,代码行数:7,代码来源:table.go

示例2: parseCIE

func parseCIE(ctx *parseContext) parsefunc {
	data := ctx.buf.Next(int(ctx.length))
	buf := bytes.NewBuffer(data)
	// parse version
	ctx.common.Version = data[0]

	// parse augmentation
	ctx.common.Augmentation, _ = util.ParseString(buf)

	// parse code alignment factor
	ctx.common.CodeAlignmentFactor, _ = util.DecodeULEB128(buf)

	// parse data alignment factor
	ctx.common.DataAlignmentFactor, _ = util.DecodeSLEB128(buf)

	// parse return address register
	ctx.common.ReturnAddressRegister, _ = util.DecodeULEB128(buf)

	// parse initial instructions
	// The rest of this entry consists of the instructions
	// so we can just grab all of the data from the buffer
	// cursor to length.
	ctx.common.InitialInstructions = buf.Bytes() //ctx.buf.Next(int(ctx.length))
	ctx.length = 0

	return parselength
}
开发者ID:dustinevan,项目名称:delve,代码行数:27,代码来源:parser.go

示例3: valoffset

func valoffset(frame *FrameContext) {
	var (
		reg, _    = util.DecodeULEB128(frame.buf)
		offset, _ = util.DecodeULEB128(frame.buf)
	)

	frame.regs[reg] = DWRule{offset: int64(offset), rule: rule_valoffset}
}
开发者ID:RJAugust,项目名称:delve,代码行数:8,代码来源:table.go

示例4: offsetextended

func offsetextended(frame *FrameContext) {
	var (
		reg, _    = util.DecodeULEB128(frame.buf)
		offset, _ = util.DecodeULEB128(frame.buf)
	)

	frame.regs[reg] = DWRule{offset: int64(offset) * frame.dataAlignment, rule: rule_offset}
}
开发者ID:RJAugust,项目名称:delve,代码行数:8,代码来源:table.go

示例5: valexpression

func valexpression(frame *FrameContext) {
	var (
		reg, _ = util.DecodeULEB128(frame.buf)
		l, _   = util.DecodeULEB128(frame.buf)
		expr   = frame.buf.Next(int(l))
	)

	frame.regs[reg] = DWRule{rule: rule_valexpression, expression: expr}
}
开发者ID:RJAugust,项目名称:delve,代码行数:9,代码来源:table.go

示例6: definefile

func definefile(sm *StateMachine, buf *bytes.Buffer) {
	var (
		_, _ = util.ParseString(buf)
		_, _ = util.DecodeULEB128(buf)
		_, _ = util.DecodeULEB128(buf)
		_, _ = util.DecodeULEB128(buf)
	)

	// Don't do anything here yet.
}
开发者ID:rdterner,项目名称:delve,代码行数:10,代码来源:state_machine.go

示例7: defcfasf

func defcfasf(frame *FrameContext) {
	reg, _ := util.DecodeULEB128(frame.buf)
	offset, _ := util.DecodeSLEB128(frame.buf)

	frame.cfa.register = reg
	frame.cfa.offset = offset * frame.dataAlignment
}
开发者ID:RJAugust,项目名称:delve,代码行数:7,代码来源:table.go

示例8: valoffsetsf

func valoffsetsf(frame *FrameContext) {
	var (
		reg, _    = util.DecodeULEB128(frame.buf)
		offset, _ = util.DecodeSLEB128(frame.buf)
	)

	frame.regs[reg] = DWRule{offset: offset * frame.dataAlignment, rule: rule_valoffset}
}
开发者ID:RJAugust,项目名称:delve,代码行数:8,代码来源:table.go

示例9: parseFileEntries

func parseFileEntries(info *DebugLineInfo, buf *bytes.Buffer) {
	for {
		entry := new(FileEntry)

		name, _ := util.ParseString(buf)
		if name == "" {
			break
		}

		entry.Name = name
		entry.DirIdx, _ = util.DecodeULEB128(buf)
		entry.LastModTime, _ = util.DecodeULEB128(buf)
		entry.Length, _ = util.DecodeULEB128(buf)

		info.FileNames = append(info.FileNames, entry)
	}
}
开发者ID:no2key,项目名称:delve,代码行数:17,代码来源:line_parser.go

示例10: defcfaexpression

func defcfaexpression(frame *FrameContext) {
	var (
		l, _ = util.DecodeULEB128(frame.buf)
		expr = frame.buf.Next(int(l))
	)

	frame.cfa.expression = expr
	frame.cfa.rule = rule_expression
}
开发者ID:RJAugust,项目名称:delve,代码行数:9,代码来源:table.go

示例11: restoreextended

func restoreextended(frame *FrameContext) {
	reg, _ := util.DecodeULEB128(frame.buf)

	oldrule, ok := frame.initialRegs[reg]
	if ok {
		frame.regs[reg] = DWRule{offset: oldrule.offset, rule: rule_offset}
	} else {
		frame.regs[reg] = DWRule{rule: rule_undefined}
	}
}
开发者ID:RJAugust,项目名称:delve,代码行数:10,代码来源:table.go

示例12: execExtendedOpcode

func execExtendedOpcode(sm *StateMachine, instr byte, buf *bytes.Buffer) {
	_, _ = util.DecodeULEB128(buf)
	b, _ := buf.ReadByte()
	fn, ok := extendedopcodes[b]
	if !ok {
		panic(fmt.Sprintf("Encountered unknown extended opcode %#v\n", b))
	}
	sm.lastWasStandard = false

	fn(sm, buf)
}
开发者ID:rdterner,项目名称:delve,代码行数:11,代码来源:state_machine.go

示例13: offset

func offset(frame *FrameContext) {
	b, err := frame.buf.ReadByte()
	if err != nil {
		panic(err)
	}

	var (
		reg       = b & low_6_offset
		offset, _ = util.DecodeULEB128(frame.buf)
	)

	frame.regs[uint64(reg)] = DWRule{offset: int64(offset) * frame.dataAlignment, rule: rule_offset}
}
开发者ID:RJAugust,项目名称:delve,代码行数:13,代码来源:table.go

示例14: samevalue

func samevalue(frame *FrameContext) {
	reg, _ := util.DecodeULEB128(frame.buf)
	frame.regs[reg] = DWRule{rule: rule_sameval}
}
开发者ID:RJAugust,项目名称:delve,代码行数:4,代码来源:table.go

示例15: advancepc

func advancepc(sm *StateMachine, buf *bytes.Buffer) {
	addr, _ := util.DecodeULEB128(buf)
	sm.address += addr * uint64(sm.dbl.Prologue.MinInstrLength)
}
开发者ID:rdterner,项目名称:delve,代码行数:4,代码来源:state_machine.go


注:本文中的github.com/derekparker/delve/dwarf/util.DecodeULEB128函数示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。