注册 登录
编程论坛 汇编论坛

ptr byte=dword ? 求高手指教

爱末流 发布于 2012-08-10 23:37, 447 次点击
如题:ptr byte=dword ? 求高手指教

 ;函数声明原型
MSG_BOX PROTO out_pbuffer:ptr byte,out_size:dword,t_size:dword

out_pbuffer:ptr byte 第一个参数是字节指针类型。 而我改成DWORD后,  用addr 字符串变量的地址传入。  在OD下反汇编看都是一样。

有些API函数需要传入字符串指针的。而且在WIN32汇编下一般被定义成了 dword 用来存放32位指针。  而我改成ptr byte 也等价的。
都是 PUSH 压入地址

我想问的是从直观的角度来看ptr byte 是否就是DWORD(API函数下的 需要传入地址的那种)



 


4 回复
#2
信箱有效2012-08-10 23:53
out_pbuffer:ptr byte
我赶脚吧,看名字就知道是个输出缓冲区指针,PTR是指针 byte是字节型的缓冲区。
有点迷惑 是ptr byte还是byte ptr
#3
zklhp2012-08-11 00:02
ptr类似于指针 你就当成 int *a 里面那个*就可以

因为是32位汇编 指针是32位 所以 你的理解是对的
#4
爱末流2012-08-11 15:45
回复 3楼 zklhp
在高级语言里面限制的很厉害,而在汇编里面就自由多了。比如 DWORD 变量就可以接受任何的32位指针类型。在API函数调用的时候就直接将该变量入栈了。就是地址入栈了
最终API函数会引用这个地址。
而在C++ 里面要传指针,就必须声明接受的参数类型也就是对应该指针类型。 你貌似不能传入指针的时候,用 int 32位变量来接受传入的地址。
而在汇编里面就非常自由,一个DOWRD貌似可以接受任何类型变量的地址。在C++里面就必须声明和变量地址相同类型的指针来接受地址。
#5
水哥2012-08-13 11:15
PTR只是个强制声明的伪指令而已,相当于C语言里 (* char)var而以,但不应该在函数原型声明里用PTR
1