mirror of
https://github.com/Relintai/programming_tutorials.git
synced 2025-04-25 21:55:03 +02:00
123 lines
2.5 KiB
C
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;
|
|
} |