General question about variable type of operand in add operation


I want to ask a general question about add operation in executable code. We know that type info is lost in executable code, but is there any any assumptions that pointer variable only can be placed at the left-hand side of an add instruction in executable code?


For example, the above instruction contains an add operation [rax+rcx], and at here the left-hand side rax register is a pointer and right-hand side rcx register is a scalar. Does this assumption always hold for all the architecture? Or is it possible that some optimization will break this assumption?

There’s no guarantees about the order of register operands or what could happen between the source and the final memory instruction