Start Back Next End
  
ZBasic Language Reference
134
ZBasic Microcontrollers
A third method of guaranteeing atomicity is to explicitly disable and re-enable interrupts as depicted
below.
Dim i as Integer
Sub Main()
   Register.SREG = &H00
   i = 200
   Register.SREG = &H80
End Sub
Although this technique may be useful in rare cases, its use is strongly discouraged.  The primary
problem with this method is that it unconditionally re-enables interrupts without regard to whether or not
interrupts were enabled beforehand.  A related technique using inline assembly language code, having
the same disadvantage, is shown below.
Dim i as Integer
Sub Main()
#asm
   cli
#endasm
   i = 200
#asm
   sei
#endasm
End Sub
6.5 Attributes for Procedures and Variables
This section describes several special attributes that you can apply to variables or procedures with native
mode devices to obtain special effects.  To apply special attributes, you list the desired attributes (see the
table below) in a comma-separated list enclosed in parentheses following the keyword Attribute.  This
entire construction is placed at the end of a normal variable, subroutine or function definition as illustrated
in the example below.
Special Attributes
Attribute
Valid For
Description
Inline
subroutine
function
Instructs the compiler to “inline” the code for the
subroutine/function instead of generating a call. 
Generally, this yields faster execution, sometimes at the
expense of larger program size.
NoInline
subroutine
function
Instructs the compiler not to “inline” the code for the
subroutine/function and, instead, generate a call to the
subroutine or function.
Used
subroutine
function
variable
Instructs the compiler to include the variable or
procedure in the executable even if it appears not to be
used.  This is useful, for example if external C or
assembly code needs to use a ZBasic data item or
procedure but it is not otherwise used in the program.
"Alias:<name>"
subroutine
function
variable
Instructs the compiler to create an alias for the
procedure or variable having the specified <name>.  This
is useful on native mode devices to allow external code
to refer to a ZBasic procedure or variable by a pre-
determined name. 
Static
variable
Instructs the compiler allocate space for the variable
statically.  This attribute is redundant for variables
defined at the module level since that is the default for
those.  In contrast, variabled defined within a procedure
Previous page Top Next page