首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对Y86中的数字求反

对Y86中的数字求反
EN

Stack Overflow用户
提问于 2014-11-17 09:04:32
回答 2查看 252关注 0票数 0

我知道有很多方法可以做到这一点,我正在努力寻找最有效的方法。

EN

回答 2

Stack Overflow用户

发布于 2014-11-17 09:09:24

从我在网上能找到的关于Y86的有限信息来看,它是x86的简化版本。x86指令集有一条NEG指令,用于对数字求反。Y86不需要。你可能需要从0中减去你的值。

票数 0
EN

Stack Overflow用户

发布于 2015-11-18 09:33:22

对不起,Y86是有限的,所以你能想象到的几乎任何操作最终都会比简单的从0减去更多的卡路里。

我们可以做的是优化0的建立(通过使用XOR)和保存/恢复临时值(通过使用堆栈)。

下面的代码可以工作:

代码语言:javascript
复制
 #
 # Negate a number in %ebx by subtracting it from 0
 #
 Start: 
  irmovl $999, %eax    // Some random value to prove non-destructiveness
  irmovl Stack, %esp   // Set the stack
  pushl %eax           // Preserve 

 Go:
  irmovl $300, %ebx
  xorl %eax, %eax
  subl %ebx,%eax
  rrmovl %eax, %ebx

 Finish:
  popl %eax             // Restore 
  halt

 .pos 0x0100
 Stack: 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26963993

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档