首页
社区
课程
招聘
[求助]汇编编写pusha指令,实际编译成pushaw,请问pushaw跟pusha有什么关系和区别?
发表于: 2019-4-3 10:32 5266

[求助]汇编编写pusha指令,实际编译成pushaw,请问pushaw跟pusha有什么关系和区别?

2019-4-3 10:32
5266
采用VS2017 X86,手写汇编其代码如下,编译成EXE之后pusha指令变成pushaw指令,其中pusha指令opcode为0x60,pushaw的opcode为0x66 0x60,请问这两个指令之间有什么区别?
void main_impl()
{

}

__declspec(naked) void main_function()
{
	_asm
	{
		pusha;
		pushf;
		call main_impl;
		popf;
		popa;
		push 0x123456;
		retn;
	}
}



[培训]科锐逆向工程师培训第53期2025年7月8日开班!

收藏
免费 0
支持
分享
最新回复 (7)
雪    币: 12876
活跃值: (9342)
能力值: ( LV9,RANK:280 )
在线值:
发帖
回帖
粉丝
2
e3fK9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6U0z5i4S2Q4x3X3g2E0k6g2)9J5c8Y4R3^5y4W2)9J5c8X3S2@1L8h3I4Q4x3V1k6X3K9h3I4W2i4K6g2X3L8h3!0V1N6h3I4W2i4K6g2X3P5o6R3$3i4K6g2X3K9h3c8Q4y4h3j5J5y4K6m8Q4x3X3g2Z5N6r3#2D9
google/baidu is your friend
2019-4-3 10:37
0
雪    币: 1411
活跃值: (1067)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
3
hzqst 7c6K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6U0z5i4S2Q4x3X3g2E0k6g2)9J5c8Y4R3^5y4W2)9J5c8X3S2@1L8h3I4Q4x3V1k6X3K9h3I4W2i4K6g2X3L8h3!0V1N6h3I4W2i4K6g2X3P5o6R3$3i4K6g2X3K9h3c8Q4y4h3j5J5y4K6m8Q4x3X3g2Z5N6r3#2D9 google/baidu is your friend
这篇我搜到了,没看到pushaw部分
2019-4-3 10:45
0
雪    币: 1411
活跃值: (1067)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
4
看来是pushaw应该是pusha word,不知道编译器为什么会在x86 32位模式下,采用pushaw指令
2019-4-3 10:57
0
雪    币: 2359
活跃值: (533)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
5
可以用pushad
2019-4-3 11:04
0
雪    币: 1411
活跃值: (1067)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
6
老刘NoOne 可以用pushad
直接使用pushad指令是可以的,pusha就变成pushaw
2019-4-3 11:06
0
雪    币: 68
活跃值: (101)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
0x66是指令前缀。
2019-4-3 16:34
1
雪    币: 689
活跃值: (422)
能力值: ( LV11,RANK:190 )
在线值:
发帖
回帖
粉丝
8
你需要手册。
原因是,虽然OpCode是一样的,但是不同的【助记符】的对ML来讲,含义是不一样的。
你用了pusha,ML会以为你要push word寄存器,然而32位默认的 OperandSize 是32位,所以会给你加上OperandSize切换前缀。

2019-4-10 12:06
0
游客
登录 | 注册 方可回帖
返回