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: Cudder !cXCudderUE 2015-07-11 1:23

some variables on the stack
The question you should be asking yourself is why aren't they in the registers already?

If you don't need x again (or one of the other ones, similarly), this uses one less register:
mov eax, [ebp+_y]
add [ebp+_x], eax
mov eax, [ebp+_z]
add eax, [ebp+_w]
mul [ebp+_x]


The general algorithm depends on how many of those values will need to be used after that single expression. It produces a dataflow graph and then matches the available instructions against it.

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