#show reveals the inner workings of the o2 compiler: expanding macros, creating intermediate code then expanding to assembler.
You can see exactly what your code produces.
It can be used on a single line of code:
int a,b,c
#show a=b+c
or several lines:
#show {
function f(int a,b,c) as int
return a+b*c
end function
}
The output can be saved to a file instead of a messagebox:
macro iif int(a,b,c,d)
if b
a=c
else
a=d
endif
end macro
#show "t.txt" {
int a,b,c,d
a=iif(a==b,c,d)
}
Resulting text:
{
'_13
int a,b,c,d
'_14
a=iif(a==b,c,d)
'_15
}
>>>>
if a==b
1=c
else
1=d
endif
_code2
>>>>
'_13
|va a as int == [ebx+4096]
|va b as int == [ebx+4100]
|va c as int == [ebx+4104]
|va d as int == [ebx+4108]
'_14
|va 1 as int == [ebx+4112]
|op 1 4 [ebx+4096]
|op 85 4 eax,[ebx+4100]
fwd _end_cnd1
|op 1 4 [ebx+4104]
|op 2 4 [ebx+4112]
jmp fwd _end_if1
._end_cnd1
|op 1 4 [ebx+4108]
|op 2 4 [ebx+4112]
._end_cnd1
._end_if1
|op 1 4 [ebx+4112]
|op 2 4 [ebx+4096]
'_15
>>>>
'_13
'_14
mov eax,[ebx+4096]
cmp eax,[ebx+4100]
jnz fwd _end_cnd1
mov eax,[ebx+4104]
mov [ebx+4112],eax
jmp fwd _end_if1
._end_cnd1
mov eax,[ebx+4108]
mov [ebx+4112],eax
._end_cnd1
._end_if1
mov eax,[ebx+4112]
mov [ebx+4096],eax
'_15