080b4b3aff
4a6fac8a update version to 5.77 801cf3fd cosmetic change of getNumCores d397e824 fix number of cores that share LLC cache a669e092 support non-intel-cpu visual studio af5f422e Merge branch 'fenghaitao-guard_x86' into develop 9b98dc17 Guard x86 specific codes with "#if defined(__i386__) || defined(__x86_64__)" dd4173e1 move some member variables input private f72646a7 update version 4612528f format change 4b95e862 Merge branch 'shelleygoel-master' 4c262fa6 add functionality to get num of cores using x2APIC ID bc70e7e1 recover Xbyak::CastTo d09a230f unlink Label when LabelManager is destroyed 973e8597 update version afdb9fe9 Xbyak::CastTo is removed b011aca4 add RegRip +/- int acae93cd increase max temp regs for StackFrame ea4e3562 util::StackFrame uses push/pop instead of mov 42462ef9 use evex encoding for vpslld/vpslldq/vpsraw/...(reg, mem, imm); da9117a9 update version of readme.md d35f4fb7 fix the encoding of vinsertps for disp8N 1de435ed bf uses Label class 613922bd add Label L() for convenience 43e15583 fix typo 93579ee6 add protect-re.cpp 60004b5c fix url of protect-re.cpp 348b2709 fix typo of doc f34f6ed5 update manual 232110be update test 82b78bf0 add setProtectMode dd8b290f put warning message if pageSize != 4096 64775ca2 a little refactoring 7c3e7b85 fix wrong VSIB encoding with idx >= 16 git-subtree-dir: externals/xbyak git-subtree-split: 4a6fac8ade404f667b94170f713367fe7da2a852
45 lines
851 B
C++
45 lines
851 B
C++
/*
|
|
sample to use static memory
|
|
*/
|
|
#include <stdio.h>
|
|
#define XBYAK_NO_OP_NAMES
|
|
#include "xbyak/xbyak.h"
|
|
|
|
MIE_ALIGN(4096) char buf[4096];
|
|
|
|
struct Code : Xbyak::CodeGenerator {
|
|
Code()
|
|
: Xbyak::CodeGenerator(sizeof(buf), buf)
|
|
{
|
|
puts("generate");
|
|
printf("ptr=%p, %p\n", getCode(), buf);
|
|
#ifdef XBYAK32
|
|
mov(eax, ptr [esp + 4]);
|
|
add(eax, ptr [esp + 8]);
|
|
#elif defined(XBYAK64_WIN)
|
|
lea(rax, ptr [rcx + rdx]);
|
|
#else
|
|
lea(rax, ptr [rdi + rsi]);
|
|
#endif
|
|
ret();
|
|
Xbyak::CodeArray::protect(buf, sizeof(buf), Xbyak::CodeArray::PROTECT_RE);
|
|
}
|
|
~Code()
|
|
{
|
|
Xbyak::CodeArray::protect(buf, sizeof(buf), Xbyak::CodeArray::PROTECT_RW);
|
|
}
|
|
} s_code;
|
|
|
|
inline int add(int a, int b)
|
|
{
|
|
return reinterpret_cast<int (*)(int, int)>(buf)(a, b);
|
|
}
|
|
|
|
int main()
|
|
{
|
|
int sum = 0;
|
|
for (int i = 0; i < 10; i++) {
|
|
sum += add(i, 5);
|
|
}
|
|
printf("sum=%d\n", sum);
|
|
}
|