Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
void mov(Register dst32, int imm32) { emit8(0xb8 + dst32); emit32(imm32); }
void mov(Register dst32, Address src32) { emit8(0x8b); emit_addr(src32, dst32); }
void push(Register dst32) { emit8(0x50 + dst32); }
void call(Address dst32) { emit8(0xff); emit_addr(dst32, 2); }
void call(Label target) { emit8(0xe8); emit_label(rel32); }
void build_frame(int size) { push(epb); sub(esp, size); }
и т.д. build_frame(32);
Register osr_buf = eax;
for (int i = 0; i < num_locks; i++) {
int slot_offset = monitor_offset - i * 8;
cmp(Address(osr_buf, slot_offset + 4), 0);
jcc(eq, done);
mov(ebx, Address(osr_buf, slot_offset));
mov(address_of_lock(i), ebx);
}
bind(done);
Использование макросов в MASM на примере создания окна