Copyright (C) 2000-2012 |
GNU Info (nasm.info)Section 6.2.86.2.8. `obj' Extensions to the `COMMON' Directive ------------------------------------------------- The `obj' format allows common variables to be either near or far; NASM allows you to specify which your variables should be by the use of the syntax common nearvar 2:near ; `nearvar' is a near common common farvar 10:far ; and `farvar' is far Far common variables may be greater in size than 64Kb, and so the OMF specification says that they are declared as a number of _elements_ of a given size. So a 10-byte far common variable could be declared as ten one-byte elements, five two-byte elements, two five-byte elements or one ten-byte element. Some `OMF' linkers require the element size, as well as the variable size, to match when resolving common variables declared in more than one module. Therefore NASM must allow you to specify the element size on your far common variables. This is done by the following syntax: common c_5by2 10:far 5 ; two five-byte elements common c_2by5 10:far 2 ; five two-byte elements If no element size is specified, the default is 1. Also, the `FAR' keyword is not required when an element size is specified, since only far commons may have element sizes at all. So the above declarations could equivalently be common c_5by2 10:5 ; two five-byte elements common c_2by5 10:2 ; five two-byte elements In addition to these extensions, the `COMMON' directive in `obj' also supports default-`WRT' specification like `EXTERN' does (explained in *Note Section 6.2.7::). So you can also declare things like common foo 10:wrt dgroup common bar 16:far 2:wrt data common baz 24:wrt data:6 automatically generated by info2www version 1.2.2.9 |