addressof - Maple Help
For the best experience, we recommend viewing online help using Google Chrome or Microsoft Edge.

Online Help

All Products    Maple    MapleSim


assemble

assemble a sequence of addresses into an object

disassemble

break an object into its component addresses

pointto

obtain the expression pointed to by an address

addressof

obtain the address that points to an expression

 

Calling Sequence

Parameters

Description

Thread Safety

Examples

Calling Sequence

assemble(objectid, addrseq)

disassemble(addr)

pointto(addr)

addressof(expr)

Parameters

objectid

-

integer or symbolic object type identifier

addrseq

-

sequence of integer addresses

addr

-

integer representing an address

expr

-

Maple expression

Description

• 

This collection of four functions is known as the ``hackware package'' in Maple.  These functions allow access to the internal representations of Maple objects and to the addresses pointing to them.

• 

You should become familiar with the internal representation of Maple objects before using this collection of functions. For details, refer to the Appendix in the Maple Programming Guide.

• 

Extreme care is required when using these functions, because their use can lead to various types of unrecoverable internal errors. Maple does some rudimentary checks of the objects created through these functions, but it is not possible to check everything.

• 

The functions assemble and disassemble are a complementary pair of functions:

assembleaddrseqaddr

disassembleaddraddrseq

• 

The first function, assemble, assembles an object identifier and a sequence of integer addresses into a Maple object and returns an integer addr that gives the address of the object.

  

The second function, disassemble, looks at the Maple object pointed to by the integer address addr, disassembles the object into its component parts, and returns the sequence of addresses of the component parts.

  

The object identifier objectid represents the type of the object, and can be expressed as an integer, or as a symbolic name. The valid object identifier names are:

AND

ASSIGN

BINARY

BREAK

CATENATE

COMPLEX

CONTROL

DCOLON

DEBUG

EQUATION

ERROR

EXPSEQ

FLOAT

FOR

FOREIGN

FUNCTION

GARBAGE

HASH

HASHTAB

HFLOAT

IF

IMPLIES

INEQUAT

INTNEG

INTPOS

LESSEQ

LESSTHAN

LEXICAL

LIST

LOCAL

MEMBER

MODDEF

MODULE

NAME

NEXT

NOT

OR

PARAM

POLY

POWER

PROC

PROD

RANGE

RATIONAL

READ

RETURN

RTABLE

SAVE

SDPOLY

SERIES

SET

STATSEQ

STOP

STRING

SUM

TABLE

TABLEREF

TRY

UNEVAL

USE

XOR

ZPPOLY

 

 

 

  

The kernelopts function with option dagtag can be used to map among these symbolic names and the corresponding integer values.

• 

The functions pointto and addressof are a complementary pair of functions:

pointtoaddrexpr

addressofexpraddr

• 

The function pointto takes an integer address addr and returns the Maple expression to which it points.

  

The addressof function takes a Maple expression and returns the integer address that points to it.

• 

An object whose only reference is through an addressof() reference could be collected by garbage collection. To avoid this, either make sure that all the objects for which you compute addressof() are assigned to variables, or delay garbage collection (see gc).

Thread Safety

• 

The assemble, disassemble, pointto and addressof commands are thread-safe as of Maple 15.

• 

For more information on thread safety, see index/threadsafe.

Examples

f3x2+5.0

f3x2+5.0

(1)

aaddressoff

a36893628046471161444

(2)

pointtoa

3x2+5.0

(3)

ddisassemblea

d16,36893628046378768108,36893488147419103235,36893628046470314940,36893488147419103231

(4)

kerneloptsdagtag=d1

SUM

(5)

pointtod2

x2

(6)

pointtod3

3

(7)

pointtod4

5.0

(8)

pointtod5

1

(9)

gassembled1,d2,d3

g36893628046368410644

(10)

pointtog

3x2

(11)

addressofg

36893628046369203900

(12)

hy=diffx2,x

hy=2x

(13)

baddressofh

b36893628046368192164

(14)

jdisassembleb

j22,36893628046379112412,36893628046368192116

(15)

kerneloptsdagtag=j1

EQUATION

(16)

pointtoj2

y

(17)

pointtoj3

2x

(18)

nassembleINEQUAT,j2,j3

n36893628046367369420

(19)

pointton

y2x

(20)

See Also

dismantle

kernelopts

ProgrammingGuide/Appendix

The Maple debugger