mirror of
https://github.com/alliedmodders/sourcemod.git
synced 2025-12-06 18:08:36 +00:00
Implement OP_UMUL.
This commit is contained in:
parent
5df377bf72
commit
8c9c1e3a6c
@ -538,6 +538,12 @@ class AssemblerX86 : public Assembler
|
||||
void imull(Register dest, Register src, int32_t imm) {
|
||||
imull(dest, Operand(src), imm);
|
||||
}
|
||||
void mul(Register src) {
|
||||
emit1(0xf7, 4, src.code);
|
||||
}
|
||||
void mul(const Operand &src) {
|
||||
emit1(0xf7, 4, src);
|
||||
}
|
||||
|
||||
void testl(const Operand &op1, Register op2) {
|
||||
emit1(0x85, op2.code, op1);
|
||||
|
||||
@ -143,7 +143,7 @@ namespace sp {
|
||||
_(SMUL, "smul") \
|
||||
_(SDIV, "sdiv") \
|
||||
_(SDIV_ALT, "sdiv.alt") \
|
||||
_(UNGEN_UMUL, "umul") \
|
||||
_(UMUL, "umul") \
|
||||
_(UDIV, "udiv") \
|
||||
_(UDIV_ALT, "udiv.alt") \
|
||||
_(ADD, "add") \
|
||||
|
||||
@ -598,6 +598,12 @@ Compiler::emitOp(OPCODE op)
|
||||
__ imull(pri, alt);
|
||||
break;
|
||||
|
||||
case OP_UMUL:
|
||||
__ movl(tmp, alt);
|
||||
__ mul(edx); // (edx:eax) = eax * edx
|
||||
__ movl(alt, tmp);
|
||||
break;
|
||||
|
||||
case OP_NOT:
|
||||
__ testl(eax, eax);
|
||||
__ movl(eax, 0);
|
||||
|
||||
Loading…
Reference in New Issue
Block a user