从过去的阅读中,似乎大多数32位驱动程序在64位上无法工作。
从纯概念层面上看,我认为64位机器在使用32位驱动程序时有额外的“空间”,因此正在尝试确定为什么它们通常不起作用。(我是来自用户空间的)
我已经阅读了这篇关于x86-64的维基百科文章,其中提到:
堆栈上的推送和弹出总是以8字节步幅进行,指针宽度为8字节。
我可以看到这可能是32位驱动程序在64位上失败的原因之一,因为它发出了一个pop(),弹出的数据量是驱动程序所期望的两倍。
我刚才提到的可能完全错了,因为我是一个用户空间的人,如果是这样,或者其他情况下,有哪些实际例子(代码或通俗易懂的解释)可以解释为什么32位驱动程序在64位上运行时会失败?