首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >汇编语言:字节操作和字操作的主要区别是什么?

汇编语言:字节操作和字操作的主要区别是什么?
EN

Stack Overflow用户
提问于 2018-09-17 15:38:40
回答 2查看 1.2K关注 0票数 1

在使用microcorruption进行逆向工程的过程中,我遇到了像mov.b cmp.b这样的指令。我在网上查了一下,发现它们被称为“字节操作”。关于movmov.b之间的差异,堆栈溢出上有a question,但不幸的是,我不能真正理解答案。

所以,我的问题是“字节操作和字操作之间的主要区别是什么?”,特别是mov.bmov,或者cmpcmp.b之间的区别。非常感谢。

EN

回答 2

Stack Overflow用户

发布于 2018-09-17 15:48:42

字节操作在单个字节上操作,字操作在数据字上操作。典型的字长为2、4或8字节,即16位、32位或64位。

假设字长为16位,例如,如果您将字节0x23写入内存位置0x1000,则地址0x1000处的内存的值将更改为0x23。如果您编写单词0x2342来寻址0x1000,那么效果取决于您的机器的字节顺序。在最先存储最低有效字节的小端机器上,地址为0x1000的内存接收值0x42,地址为0x1001的内存接收值0x23。在大端机器上,情况正好相反。

这同样适用于所有其他指令。

许多现代处理器只有字大小的数据的算术指令,而只有字节大小的指令是特殊的加载和存储指令。在这种架构中,单字节中的数据在加载到寄存器中时被零扩展或符号扩展为全字,因此您可以像对全字进行操作一样对其进行操作。例如,0x80在零扩展时变为0x0080,在符号扩展时变为0xff80

票数 2
EN

Stack Overflow用户

发布于 2018-09-17 15:59:55

movcmp中的操作后缀表示在操作中要修改的大小。示例:mov $ 2, (% ebx)。数字2会移动到ebx中的1字节,还是数字2会移动到ebx中的4字节?大小前缀bwl用于此目的,分别表示1、2和4字节的大小。更多信息:http://flint.cs.yale.edu/cs421/papers/x86-asm/asm.html

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

https://stackoverflow.com/questions/52371360

复制
相关文章

相似问题

添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档