programming_tutorials/06_threading/wip/05_ea_container/mem.h

123 lines
2.5 KiB
C

hex
0xF -> 1111
0xFF -> 1111 1111 -> 1byte
0xFFFFFFFF -> max uint
bitmanipuláció
bitwise and -> &
logical and -> &&
0x01 & 0x0F -> 0x01
0000 0001 & 0000 1111 -> 0000 0001
bitwise or -> |
logical or -> ||
0x01 & 0x0F -> 0x01
0000 0001 & 0000 1111 -> 0000 1111
bit shift
left shift
0000 0001 << 1 -> 0000 0010
right shift
0000 0010 >> 1 -> 0000 0001
bit packing
void set_collision_mask(bool layer1, bool layer2, .....)
void set_collision_mask(uint layers)
void set_collision_layer(uint layers)
0010 0011 ->
0010 0011 & 0x0F -> 0010 0011 & 0000 1111 -> 0000 0011
0010 0011 & 0xF0 -> 0010 0011 & 1111 0000 -> 0010 0000
0010 0011 >> 4 -> 0000 0010
bitflag
enum BuildFlags {
BUILD_FLAG_USE_ISOLEVEL = 1 << 0, 0000 0001
BUILD_FLAG_USE_LIGHTING = 1 << 1, 0000 0010
BUILD_FLAG_USE_AO = 1 << 2, 0000 0100
BUILD_FLAG_USE_RAO = 1 << 3,
BUILD_FLAG_GENERATE_AO = 1 << 4,
BUILD_FLAG_AUTO_GENERATE_RAO = 1 << 5,
BUILD_FLAG_BAKE_LIGHTS = 1 << 6,
BUILD_FLAG_CREATE_COLLIDER = 1 << 7,
BUILD_FLAG_CREATE_LODS = 1 << 8, 1000 0000
};
//static int BUILD_FLAG_USE_ISOLEVEL = 1 << 0;
int flags = BUILD_FLAG_USE_ISOLEVEL | BUILD_FLAG_USE_LIGHTING | BUILD_FLAG_CREATE_LODS -> 1000 0011
flags & BUILD_FLAG_USE_ISOLEVEL != 0 -> a flag jelen van (-> 0000 0001)
if (flags & BUILD_FLAG_USE_ISOLEVEL) -> c, c++
mamória
valójában 1ds tömb!
64 bites os -> 64 bites int nagyságó cím
0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x14 0xF1 0x61 0x12 0x12 0x11 0x33
0x11 0xF1 0x11 0x12 0x12 0x11 0x33
0x11 0xF1 0x11 0x12 0x12 0x11 0x33
0x11 0xA1 0x11 0x12 0x12 0x11 0x33
0x11 0xE1 0x11 0x12 0x12 0x11 0x33
0x11 0xA1 0x11 0x12 0x12 0x11 0x33
0x11 0xF1 0x11 0x12 0x12 0x11 0x33
0x11 0xF1 0x11 0x12 0x12 0x11 0x33
0x11 0xF1 0x11 0x12 0x12 0x11 0x33
0x11 0xF1 0x11 0x12 0x12 0x11 0x33
0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x00 0x00 0x00
...
A0, A1, A2
ADD A0, A1
square(int): -> (label) memóriacím lessz
push rbp
mov rbp, rsp
mov DWORD PTR [rbp-4], edi
.L3:
cmp DWORD PTR [rbp-4], 999
jg .L2
add DWORD PTR [rbp-4], 1
jmp .L3
.L2:
mov eax, DWORD PTR [rbp-4]
pop rbp
ret
0x14 -> push
0x11 -> jg
0xF1 -> mov
//eredeti kód
int square(int num) {
while (num < 1000) {
num += 1;
}
return num;
}