gpt4 book ai didi

c++ - mov bl 在汇编中做了什么

转载 作者:搜寻专家 更新时间:2023-10-31 00:31:14 24 4
gpt4 key购买 nike

你能解释一下下面的汇编代码是如何工作的吗?

xor ebx, ebx;
mov bl, byte ptr[ecx];
cmp ebx, 0;

我不明白为什么你将字节移动到 bl 然后比较 ebx 而不是 bl

最佳答案

blebx 寄存器中低 8 位(位 7-0)的名称。还有bhebx的15-8位,bx是低16位(bits 15-0)。高 16 位没有名称。

这适用于所有寄存器 eaxebxecxedx

鉴于 ebx 首先被置零,生成的代码可能是编译器编译类似的结果:

char ch;
const char str;
int i;
...
ch = str[i];
if (ch == 0) ...

[或者可能只是if (ch)]。

扩展到 32 位可能是因为“节省空间”或“运行速度更快”,或者 if (ch == 0) 有一个 int 在右侧,需要将值作为 int 而不是作为 char = byte - 我不能在没有看到原始源代码的情况下说出哪个 -即便如此,编译器中的实际代码生成还是相当复杂的一组决策,基于“什么在哪个处理器上运行速度快”和“根据语言的正确性”。

关于c++ - mov bl 在汇编中做了什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34380974/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com