32位编译器如何传递64位参数
之前我们了解到,无论我们传递参数是1字节2字节,最后编译器都会默认4字节的给我们传送,当我们用到的是8字节的那么是怎么返回的呢?
__int64 占用8字节空间
C语言:
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/464d51b09c12e3c725281953c0f0215d.jpeg)
我们下断点调试一下看看汇编代码:
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/4eb07497e81a7ba8c0a1c13fd6021b80.jpeg)
在Function函数中我们看到,返回x值时,他会把8字节的值拆分成4字节和4字节,分别放入了eax和edx中。。。
我们看看eax的值:
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/64fe0196b4ce2e6289c525edbbc0196b.jpeg)
edx:
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/4879242fb7fbb60e4f9c351f23a5f228.jpeg)
而主函数中接收也是按照4字节4字节的形式接收
汇编:
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/725c6b0d63b44f61510755bedc4f8820.jpeg)
我们来了解一下在Function函数中创建一个char型的数组&#x