我想知道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 ?
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; }
问题内容: 我最近在Netbeans(6.7)中增加了对Profiler的使用,这是一个很棒的工具。 我有一个问题。进行堆转储时,可以在摘要页面(期望窗口)上“按保留的大小查找最大的对象”。 这个值是什么,如何将其用于分析内存使用情况? 问题答案: 对象的保留大小是该对象从垃圾回收保留的内存量。 形式上的定义是“对象的大小加上递归仅由第一个对象引用的所有对象的大小”。 有关保留的内存是什么的更多说