встала предо мной трабла написания миниатюрного линеаризатора выражений (сорри не знаю как это по научному) - в общем эта фигня разматывает рекурсию во мнемокод. допустим выражение "(a+6) > b ? b*7 : a^b" становится:
mov bx,[a]
mov si,a
push bx
mov bx,6
pop dx
add dx,bx
push dx
mov bx,[b]
mov si,b
pop dx
cmp dx,bx
mov dx,0
jbe false0
mov dx,1
false0:
test dx,dx
jz false1
mov bx,[b]
mov si,b
push bx
mov bx,7
pop ax
mul bx
jmp end1
false1:
mov bx,[a]
mov si,a
push bx
mov bx,[b]
mov si,b
pop dx
xor dx,bx
mov bx,dx
end1:
result is in bx
не очень приглядно <_<
в общем, к вам просьба провести аудицию, и подсказать, как можно это более культурно оформить - меньше движений регистрами, меньше строк кода, итд... хочу простенький компилятор слатать - не более 1000-чи строк, дабы откомпилить те великие сорсы v5 никсов под x86, писанные на пред K&R-овском диалекте