首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Movsbl指令是做什么的?

Movsbl指令是做什么的?
EN

Stack Overflow用户
提问于 2018-03-02 06:58:16
回答 2查看 0关注 0票数 0

我已经在网上搜索过了,但是我找不到一个明确的例子来理解这个指令是做什么的。

EN

回答 2

Stack Overflow用户

发布于 2018-03-02 15:05:15

移动符号从字节扩展到长字。在Intel语法中,该指令的助记符是MOVSX。

当一个类型的变量int8_t需要被转换为时int,AC编译器可以使用这个指令,这在算术和其他一些操作(整数提升)上自动发生。

由于该指令写入目标寄存器的所有32位(或64位),因此避免了只写入寄存器的低8位(或16位)可能导致的性能损失。一组类似的指令允许用零位扩展(英特尔语法中的MOVZX,AT&T语法中的MOVZst(从大小s到大小t))。

票数 0
EN

Stack Overflow用户

发布于 2018-03-02 16:16:45

这是一个很明显的例子:

代码语言:txt
复制
MOVSBL and MOVZBL
* MOVSBL sign-extends a single byte, and copies it into a
  double-word destination
* MOVZBL expands a single byte to 32 bits with 24 leading
  zeros, and copies it into a double-word destination

Example:
%eax = 0x12345678
%edx = 0xAAAABBBB
MOVB %dh, %al         %eax = 0x123456BB
MOVSBL %dh, %eax      %eax = 0xFFFFFFBB
MOVZBL %dh, %eax      %eax = 0x000000BB
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100003560

复制
相关文章

相似问题

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