libyasm
Data Fields
yasm_value Struct Reference

A value. More...

#include <coretype.h>

Data Fields

yasm_exprabs
 The absolute portion of the value. More...
 
yasm_symrecrel
 The relative portion of the value. More...
 
yasm_symrecwrt
 What the relative portion is in reference to. More...
 
unsigned int seg_of: 1
 If the segment of the relative portion should be used, not the relative portion itself. More...
 
unsigned int rshift: 7
 If the relative portion of the value should be shifted right (supported only by a few object formats). More...
 
unsigned int curpos_rel: 1
 Indicates the relative portion of the value should be relocated relative to the current assembly position rather than relative to the section start. More...
 
unsigned int ip_rel: 1
 Indicates that curpos_rel was set due to IP-relative relocation; in some objfmt/arch combinations (e.g. More...
 
unsigned int jump_target: 1
 Indicates the value is a jump target address (rather than a simple data address). More...
 
unsigned int section_rel: 1
 Indicates the relative portion of the value should be relocated relative to its own section start rather than relative to the section start of the bytecode containing this value. More...
 
unsigned int no_warn: 1
 Indicates overflow warnings have been disabled for this value. More...
 
unsigned int sign: 1
 Sign of the value. More...
 
unsigned int size: 8
 Size of the value, in bits. More...
 

Detailed Description

A value.

May be absolute or relative. Outside the parser, yasm_expr should only be used for absolute exprs. Anything that could contain a relocatable value should use this structure instead.

See Also
value.h for related functions.

Definition at line 121 of file coretype.h.

Field Documentation

yasm_expr* yasm_value::abs

The absolute portion of the value.

May contain differences between symrecs but not standalone symrecs. May be NULL if there is no absolute portion (e.g. the absolute portion is 0).

Definition at line 126 of file coretype.h.

unsigned int yasm_value::curpos_rel

Indicates the relative portion of the value should be relocated relative to the current assembly position rather than relative to the section start.

"Current assembly position" here refers to the starting address of the bytecode containing this value. Boolean.

Definition at line 152 of file coretype.h.

unsigned int yasm_value::ip_rel

Indicates that curpos_rel was set due to IP-relative relocation; in some objfmt/arch combinations (e.g.

win64/x86-amd64) this info is needed to generate special relocations.

Definition at line 158 of file coretype.h.

unsigned int yasm_value::jump_target

Indicates the value is a jump target address (rather than a simple data address).

In some objfmt/arch combinations (e.g. macho/amd64) this info is needed to generate special relocations.

Definition at line 164 of file coretype.h.

unsigned int yasm_value::no_warn

Indicates overflow warnings have been disabled for this value.

Definition at line 175 of file coretype.h.

yasm_symrec* yasm_value::rel

The relative portion of the value.

This is the portion that may need to generate a relocation. May be NULL if no relative portion.

Definition at line 131 of file coretype.h.

unsigned int yasm_value::rshift

If the relative portion of the value should be shifted right (supported only by a few object formats).

If just the absolute portion should be shifted, that must be in the abs expr, not here!

Definition at line 145 of file coretype.h.

unsigned int yasm_value::section_rel

Indicates the relative portion of the value should be relocated relative to its own section start rather than relative to the section start of the bytecode containing this value.

E.g. the value resulting from the relative portion should be the offset from its section start. Boolean.

Definition at line 172 of file coretype.h.

unsigned int yasm_value::seg_of

If the segment of the relative portion should be used, not the relative portion itself.

Boolean.

Definition at line 139 of file coretype.h.

unsigned int yasm_value::sign

Sign of the value.

Nonzero if the final value should be treated as signed, 0 if it should be treated as signed.

Definition at line 180 of file coretype.h.

unsigned int yasm_value::size

Size of the value, in bits.

Definition at line 183 of file coretype.h.

yasm_symrec* yasm_value::wrt

What the relative portion is in reference to.

NULL if the default.

Definition at line 134 of file coretype.h.


The documentation for this struct was generated from the following file: