Return Styles: Pseud0ch, Terminal, Valhalla, NES, Geocities, Blue Moon. Entire thread

How to compile arithmetic expressions to x86?

Name: Anonymous 2015-07-10 21:16

hi prog, say I want to take as given some variables on the stack x,y,z,w and compile expressions (x+y)*(z+w) to x86 asm.

first off the instructions take registers or pointers and well x86 is weird and has instructions like this:

add x, y ;x OR y must be a register, result in x
mul x ;multiplies eax with x, result is put into eax


so this would work:

mov eax, stack0
add eax, stack1
mov ebx, stack2
add ebx, stack3
mul ebx


but how would you make an algorithm to do this in general?

Name: Anonymous 2015-07-11 1:55

>>3
That doesn't help you if you need to pass more values than there are registers, which is stupidly common on your beloved x86 because it only has a handful. It is also not fun at all to debug code for architectures with limited registers because an optimal register scheduling scheme will destroy even very recent and useful intermediate values with great eagerness.

Sure, you can always dial back the optimization level in your code generator or use tracing features, but on non prematurely optimized ISAs you aren't forced into doing this immediately for the most trivial cases. With x86, you have to reach for a bazooka to swat a fly.

Newer Posts
Don't change these.
Name: Email:
Entire Thread Thread List