当前位置: 首页 > 知识库问答 >
问题:

在cmp上保存大小以外的测试用途$0

卢子民
2023-03-14

我想知道cmp在对寄存器进行零检查时如何在保存字节之外使用,例如:

cmp $0, %eax

vs.

test %eax, %eax
   mov $1, %eax
   mov $2, %ebx
   test %eax, %ebx
   jg _start       # <-- doesn't jump
   jl _start       # <-- doesn't jump

   mov $1, %eax
   mov $1, %ebx
   test %eax, %ebx
   je _start       # <-- doesn't jump

   mov $0, %eax
   mov $1, %ebx
   test %eax, %ebx
   je _start       # <-- why is this the only one that works? 1 & 0 == 0 ?

共有1个答案

贺彬
2023-03-14

test指令还有其他用法吗?

test指令的用法包括:

>

  • 检查值是否为零。例如。如果(x==0)->测试eax,eax

    检查一个值是否可以被2的任何次方整除。例如。如果(x%8==0)->测试eax,7

    您的第二个示例可以工作,但不应该跳转(类似于“if(1&1==0)goto__start;”,它什么也不做)。您的第三个示例工作,应该跳转。

  •  类似资料:
    • 我知道JE和JZ指令是相同的,而且使用OR给出了一个字节的大小改进。然而,我也关心代码速度。似乎逻辑运算符会比SUB或CMP更快,但我只是想确定一下。这可能是大小和速度之间的权衡,或者是双赢(当然代码会更加不透明)。

    • 🕒 一面12.5 自我介绍 测试流程 登录界面测试用例 手撕代码 讲述思想 反问 面试时间 0.5h 当天晚上给二面通知 🕒 二面12.6 自我介绍 场景题:一个web简单的应用,分别从开发角度,测试角度,用户角度出一些题 数据库设计一个表等等...我觉得问的很细,蛮难。但是面试官很有耐心。 手撕sql(没写出来...) 手撕编程 反问 面试时间 1h 二面好难,但是还是抱有一丝幻想,还有面试

    • 问题内容: 在Django中上传图片后,如何轻松调整其大小?我正在使用Django 1.0.2,并且已经安装了PIL。 我当时正在考虑重写Model的save()方法以调整其大小,但是我真的不知道如何开始并覆盖它。 有人可以指出我正确的方向吗?谢谢 :-) @GuðmundurH:这将不起作用,因为django-stdimage软件包在Windows上不起作用 问题答案: 在这种方法中,你可以将块

    • 问题内容: 除了保存代码行以外,lambda表达式还有其他用途吗? lambdas是否提供任何特殊功能来解决不容易解决的问题?我看到的典型用法是代替编写此代码: 我们可以使用lambda表达式来缩短代码: 问题答案: Lambda表达式通常不会改变您可以使用Java解决的问题集,但是肯定会使解决某些问题变得更加容易,这是因为我们不再使用汇编语言进行编程的原因。从程序员的工作中删除多余的任务可以使工

    • 我正在使用spring框架构建rest api,只是为了学习,我在用关系保存数据时遇到了一些问题。我正在构建一种书店,我的book实体看起来像这个@entity public class book{@id@generatedValue(strategy=generationtype.auto)私有长ID; }

    • 有些记得不是很清,就面了两场,没有三面,估计是寄。 9.12 一面 面试了70min,最长的一场 1.自我介绍,项目,实习 细聊一下项目,实习,主要是项目的困难、怎么解决,实习负责的任务之类。 2.问了一些简单计网相关,记得不是很清楚: get和post区别 tcp和udp的区别 tcp的三次握手和四次挥手 搜索引擎输入关键词点击搜索,到呈现页面,中途发生了什么 http相关的,具体问的什么记不太