小编0-0*_*0-0的帖子

左移零的目的是什么?

在阅读ASM 4.1源代码后,我发现了以下实例:

int ASM4 = 4 << 16 | 0 << 8 | 0;
int ASM5 = 5 << 16 | 0 << 8 | 0;
Run Code Online (Sandbox Code Playgroud)

这些左移0到8是否对表达做了什么,或者'或'为0做了什么?

它不等于只有:

int ASM4 = 4 << 16;
int ASM5 = 5 << 16;
Run Code Online (Sandbox Code Playgroud)

java

27
推荐指数
3
解决办法
2205
查看次数

用于跟踪iOS设备上的Objective-C调用的GDB脚本 - 问题

我有一个gdb脚本,我正在努力跟踪所有通过objc_msgSend的Objective-C方法调用,但我遇到了一个我似乎无法处理的问题.在查看了Objective-C运行时源代码之后,我开发了以下脚本,以便在objc_msgSend的每个中断处打印[].问题是在某些情况下data_NEVER_USE不是有效指针但也不是null.我能找到一个类是否被初始化的唯一指标是id-> data_NEVER_USE-> flags&RW_REALIZED.我在这里错过了类初始化的哪些方面,这将允许我跳过这种情况?

b objc_msgSend
c
commands
silent

if (*$r0 == 0)
    continue
end

set $id = (class_t *)$r0
set $sel = $r1      
print *$id  
if($id->data_NEVER_USE != 0)
    set $data = (class_ro_t *) ($id->data_NEVER_USE)
    if (($data->flags & 0x80000000) && ($data->name))
        set $classname = $data->name
        printf "[%s ", $classname
    else
        continue
    end
end

if ($sel != 0)
    printf "%s", $sel
else
    printf "null"
end

printf "]\n"
continue
end
Run Code Online (Sandbox Code Playgroud)

我很感激任何帮助.谢谢.

gdb objective-c objective-c-runtime ios

4
推荐指数
1
解决办法
2294
查看次数

标签 统计

gdb ×1

ios ×1

java ×1

objective-c ×1

objective-c-runtime ×1