global bar | |
global foo | |
section .bar | |
bar: | |
dd foo-$ | |
dd baz-$ | |
call foo | |
call baz | |
foo: | |
section .data | |
baz: | |
dd foo-$ | |
;dd $-foo ; illegal | |
dd baz-$ | |
dd $-baz | |
dd foo+4-$ ; with constant | |
dd $-baz+foo+4-$ ; both local and cross-segment (legal) | |
dd baz+foo+4-$-$ ; ditto, slightly different | |
;dd (bar-$)+(foo-$) ; illegal (too many cross-segment) | |
dd baz-$+baz-$ ; two from same segment | |
section .text | |
mov dword [foo-$], 5 | |
mov eax, foo-$ | |
call foo |