mik 发表于 2008-04-24 20:58

dxcnjupt 所说是对的

另见:
http://bbs.chinaunix.net/viewthread.php?tid=993238&extra=page%3D2%26amp%3Bfilter%3Ddigest&page=7

system888net 发表于 2008-04-24 21:48

回复 #21 mik 的帖子

call dword ptr DS:
                call dword ptr DS:
vc6.0编译后得:
        call        DWORD PTR ds:255
        call        DWORD PTR ds:-1

mik 发表于 2008-04-24 22:03

原帖由 system888net 于 2008-4-24 21:48 发表 http://linux.chinaunix.net/bbs/images/common/back.gif
call dword ptr DS:
                call dword ptr DS:
vc6.0编译后得:
        call        DWORD PTR ds:255
        call        DWORD PTR ds:-1

汗~
好,就拿你这两条语句来说:

call dword ptr ds:            被编译成: 3e ff 15 ff 00 00 00
call dword ptr ds:      被编译成: 3e ff 15 ff ff ff ff

你自己说说是什么意思

system888net 发表于 2008-04-24 22:14

原帖由 mik 于 2008-4-24 22:03 发表 http://linux.chinaunix.net/bbs/images/common/back.gif


汗~
好,就拿你这两条语句来说:

call dword ptr ds:            被编译成: 3e ff 15 ff 00 00 00
call dword ptr ds:      被编译成: 3e ff 15 ff ff ff ff

你自己说说是什么意思

大侠直接说出自己的观点!

mik 发表于 2008-04-24 22:18

原帖由 system888net 于 2008-4-24 22:14 发表 http://linux.chinaunix.net/bbs/images/common/back.gif


大侠直接说出自己的观点!

我说很容易呀 ,不是叫你说说看,你理解成什么嘛!

这样才会学习到呀

system888net 发表于 2008-04-24 22:22

原帖由 mik 于 2008-4-24 22:18 发表 http://linux.chinaunix.net/bbs/images/common/back.gif


我说很容易呀 ,不是叫你说说看,你理解成什么嘛!

这样才会学习到呀

请说出你的编译工具和环境.

另外64bit反对的结论也请大侠说出依据或实例!

system888net 发表于 2008-04-24 22:45

原帖由 mik 于 2008-4-23 23:55 发表 http://linux.chinaunix.net/bbs/images/common/back.gif


你的理解完全是错误的!

call dword ptr    这种形式是绝对地址,目标地址来自
至于:
在64位下:call dword ptr 这种形式的调用是错误的!
64位下,地址强制性为64位,不可能转为 ...

闹了半天,这句话不用不用争了:
"call dword ptr    这种形式是绝对地址,目标地址来自"
原文也是这个意思.也许是表述的不太好.

和大侠分歧最大是在64bit这里::)
对于64bit的说法,这里再描述一下:
address0: CALL DWORD PTR
在 32 位模式中,是调用地址 N32 中存储的 32 位指针值的指令:
在 64 位模式中,相同的操作码字节调用地址 address0+N32 中存储的 64 位指针值
指令本身也是5byte.
请大侠查清楚64bit的指令.

[ 本帖最后由 system888net 于 2008-4-24 22:47 编辑 ]

mik 发表于 2008-04-24 23:08

原帖由 system888net 于 2008-4-24 22:45 发表 http://linux.chinaunix.net/bbs/images/common/back.gif


闹了半天,这句话不用不用争了:
"call dword ptr    这种形式是绝对地址,目标地址来自"
原文也是这个意思.也许是表述的不太好.

和大侠分歧最大是在64bit这里::)
对于64bit的说法,这里再 ...

从你的论述中,你还没明白 call dword ptr 的含义
以至于你会认为是5个字节,5个字节是错误的

至于你说的64位下,也不是等于你说的address0+n32

system888net 发表于 2008-04-24 23:19

回复 #16 mik 的帖子

这是真正的分歧所在.

对于64bit这次大侠的确有误
大侠自己可以测试一下或查一下intel的资料或与intel的人确认一下,再做结论.

如果大侠测试出不同的结果,请告知编译工具和平台,以便客观的进行交流.

可以看出大侠的汇编功底很好,这里顶一下,希望这个论坛更火爆.

system888net 发表于 2008-04-24 23:25

原帖由 mik 于 2008-4-24 23:08 发表 http://linux.chinaunix.net/bbs/images/common/back.gif


从你的论述中,你还没明白 call dword ptr 的含义
以至于你会认为是5个字节,5个字节是错误的

至于你说的64位下,也不是等于你说的address0+n32

是不是5个字节, 要指明编译器和平台,或见intel或者微软的<<开始进行 64 位 Windows 系统编程之前需要了解的所有信息>>
页: 1 2 [3] 4 5
查看完整版本: 32bit的编译器向64bit移植时要注意的一个小问题.