/* | |
* Generic 64-bit binary operation. | |
*/ | |
/* binop vAA, vBB, vCC */ | |
movzbl 2(rPC),%eax # eax<- BB | |
movzbl 3(rPC),%ecx # ecx<- CC | |
SPILL(rIBASE) # save rIBASE | |
GET_VREG_WORD rIBASE %eax 0 # rIBASE<- v[BB+0] | |
GET_VREG_WORD %eax %eax 1 # eax<- v[BB+1] | |
$instr1 # ex: addl (rFP,%ecx,4),rIBASE | |
$instr2 # ex: adcl 4(rFP,%ecx,4),%eax | |
SET_VREG_WORD rIBASE rINST 0 # v[AA+0] <- rIBASE | |
FETCH_INST_OPCODE 2 %ecx | |
UNSPILL(rIBASE) # restore rIBASE | |
SET_VREG_WORD %eax rINST 1 # v[AA+1] <- eax | |
ADVANCE_PC 2 | |
GOTO_NEXT_R %ecx |