Copyright (C) 2000-2012 |
GNU Info (nasm.info)Section 6.2.26.2.2. `GROUP': Defining Groups of Segments ------------------------------------------- The `obj' format also allows segments to be grouped, so that a single segment register can be used to refer to all the segments in a group. NASM therefore supplies the `GROUP' directive, whereby you can code segment data ; some data segment bss ; some uninitialised data group dgroup data bss which will define a group called `dgroup' to contain the segments `data' and `bss'. Like `SEGMENT', `GROUP' causes the group name to be defined as a symbol, so that you can refer to a variable `var' in the `data' segment as `var wrt data' or as `var wrt dgroup', depending on which segment value is currently in your segment register. If you just refer to `var', however, and `var' is declared in a segment which is part of a group, then NASM will default to giving you the offset of `var' from the beginning of the _group_, not the _segment_. Therefore `SEG var', also, will return the group base rather than the segment base. NASM will allow a segment to be part of more than one group, but will generate a warning if you do this. Variables declared in a segment which is part of more than one group will default to being relative to the first group that was defined to contain the segment. A group does not have to contain any segments; you can still make `WRT' references to a group which does not contain the variable you are referring to. OS/2, for example, defines the special group `FLAT' with no segments in it. automatically generated by info2www version 1.2.2.9 |