优化筛选从 C 到汇编的空格

问题描述

我正在学习汇编并将我的一些 C 代码编译为汇编以查看它在做什么。我有一段代码忽略了我的字符串中的空格。

while ((str[index] == ' ') || (str[index] == '\n') || (str[index] == '\t')
        || (str[index] == '\f') || (str[index] == '\r') || (str[index] == '\v'))
        index++;

在正常编译中,汇编会比较这些字符中的每一个,我理解这一点。但是如果我使用 -O 编译优化版本,我会得到一个更简洁的版本,但我不确定它在做什么。

LBB0_12:                                ##   in Loop: Header=BB0_1 Depth=1
    incq    %rax
LBB0_1:                                 ## =>This Inner Loop Header: Depth=1
    movzbl  (%rdi,%rax),%ecx
    leal    -9(%rcx),%edx
    cmpb    $5,%dl
    jb  LBB0_12
## %bb.2:                               ##   in Loop: Header=BB0_1 Depth=1
    cmpb    $32,%cl
    je  LBB0_12

我知道 32 正在检查空间。但是所有其他字符似乎都包含在标签 1 中,我迷路了。有人可以解释一下吗? 在此先感谢您!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)