10.3.1 Iterators

Iterators are macros that return a value or NULL to terminate the loop. A macro is handled as an iterator when called after the foreach (@@) mark.

Here's an implementation of a generic numeric for loop using an iterator

; implementation of a numeric range 'for' loop in radare script
; usage:  x @@ .(for 10 100)

(for from to
  ?$@+$0==$1  ; if (from+iter == to)
  ??()        ;   return NULL
  ()$@+$0     ; return from+iter
)

So now we can write something like this:

x @@.(for 0x300 0x400)
...

To execute the 'x' command at every offset from 0x300 to 0x400.