Ich versuche gerade hier durchzusteigen, aber so wie der Disassembler das präsentiert, müsste doch alles nach links rausgeshiftet werden (<<32). oder ist das lediglich eine komische schreibweise was Ghidra da raushaut? welche bits werden maskiert? Mir raucht der Kopf!
1 | ulonglong can_check_permission_FUN_000b90a8(void) |
2 | |
3 | { |
4 | return ((ulonglong)can_chk_perm_DAT_40000cbd << 32) >> 35; |
5 | } |
Assembler:
1 | ************************************************************** |
2 | * FUNCTION * |
3 | ************************************************************** |
4 | undefined can_check_permission_FUN_000b90a8() |
5 | assume r13 = 0x40008004 |
6 | undefined <UNASSIGNED> <RETURN> |
7 | undefined4 Stack[0x4]:4 local_res4 |
8 | undefined4 Stack[-0x10]:4 local_10 |
9 | can_check_permission_FUN_000b90a8 |
10 | 000b90a8 94 21 ff f0 stwu r1,DAT_fffffff0(r1) |
11 | 000b90ac 7c 08 02 a6 mfspr r0,LR |
12 | 000b90b0 90 01 00 14 stw r0,local_res4(r1) |
13 | 000b90b4 3d 80 40 00 lis r12,0x4000 |
14 | 000b90b8 88 6c 0c bd lbz r3,offset can_chk_perm_DAT_40000cbd(r12) |
15 | 000b90bc 54 63 ee fe rlwinm r3,r3,0x1d,0x1b,0x1f |
16 | 000b90c0 80 01 00 14 lwz r0,local_res4(r1) |
17 | 000b90c4 7c 08 03 a6 mtspr LR,r0 |
18 | 000b90c8 38 21 00 10 addi r1,r1,0x10 |
19 | 000b90cc 4e 80 00 20 blr |
ISA-Manual_ https://www.nxp.com/docs/en/user-guide/BOOK_EUM.pdf https://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf