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