'is the register the only place the where arithmetic calculation operand come from? [duplicate]

(1) I wonder if the is register the only place the arithmetic calculation can happen? It looks like: add BYTE PTR [var], 10 — add 10 to the single byte stored at memory address var is also correct in syntax, is there an implicit register?

(2) What about CMP instruction, is register the only place where this instruction can happen?

(3) How about a POP instruction, is the stack value also poped into an implicit non-volatile register?

(4) Non-volatile register's value must be preserved along with the function, is this correct understanding? Inside a function, it uses RSI register to get the value from the stack. Is that value required to preserved? In other words, the RSI register can only be used once by this function?

(5) If the function changes Non-volatile register value, can it preserve the previous value in either stack or another register?



Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source