MCPcopy Create free account
hub / github.com/WheretIB/nullc / GenCodeCmdPushCmplx

Function GenCodeCmdPushCmplx

NULLC/CodeGen_X86.cpp:1330–1361  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1328}
1329
1330void GenCodeCmdPushCmplx(VMCmd cmd)
1331{
1332 EMIT_COMMENT("PUSH complex");
1333 if(cmd.helper == 0)
1334 return;
1335 if(cmd.helper <= 32)
1336 {
1337 unsigned int currShift = cmd.helper;
1338 while(currShift >= 4)
1339 {
1340 currShift -= 4;
1341 if(cmd.flag == ADDRESS_ABOLUTE)
1342 EMIT_OP_ADDR(o_push, sDWORD, cmd.argument+paramBase+currShift);
1343 else
1344 EMIT_OP_RPTR(o_push, sDWORD, rEBP, cmd.argument+paramBase+currShift);
1345 }
1346 assert(currShift == 0);
1347 }else{
1348 EMIT_OP_REG_NUM(o_sub, rESP, cmd.helper);
1349 EMIT_OP_REG_REG(o_mov, rEBX, rEDI);
1350
1351 if(cmd.flag == ADDRESS_ABOLUTE)
1352 EMIT_OP_REG_NUM(o_mov, rESI, cmd.argument+paramBase);
1353 else
1354 EMIT_OP_REG_RPTR(o_lea, rESI, sNONE, rEBP, cmd.argument+paramBase);
1355 EMIT_OP_REG_REG(o_mov, rEDI, rESP);
1356 EMIT_OP_REG_NUM(o_mov, rECX, cmd.helper >> 2);
1357 EMIT_OP(o_rep_movsd);
1358
1359 EMIT_OP_REG_REG(o_mov, rEDI, rEBX);
1360 }
1361}
1362
1363void GenCodeCmdPushCharStk(VMCmd cmd)
1364{

Callers

nothing calls this directly

Calls 8

EMIT_COMMENTFunction · 0.85
EMIT_OP_ADDRFunction · 0.85
EMIT_OP_RPTRFunction · 0.85
assertFunction · 0.85
EMIT_OP_REG_NUMFunction · 0.85
EMIT_OP_REG_REGFunction · 0.85
EMIT_OP_REG_RPTRFunction · 0.85
EMIT_OPFunction · 0.85

Tested by

no test coverage detected