As we know, one high-level language instruction like "counter++" in C++ will be translated into several assembly langauge instructions.
My question is what about a single assembly language instruction? Is it true that some assembly language instruction will also be translated into several machine instructions that hardware can directly reads?
If positive, when thread/process scheduling occurs, is it true that context-switch(or other stuff needs to be done during scheduling) takes place as soon as CPU finishes executing its current machine instruction, even if there are several instructions left which form a single assembly language instruction together with the current one?
For example, one assembly language instruction A may be translated into machine instruction a1 ,a2, a3. Can context-switch happene between a2, a3?
corresponding machine instructions of a single assembly language instruction A:
a1 (executed) a2 (executing..) <--- next context switch is about to occur a3 (not executed yet) <--- Am I be able to execute before the next context switch?
My guess is a3 will not be executed because the hardware only knows its machine instructions and have no idea of assembly language. So each instruction is executed separatedly. Am I right?