如何解决通过堆栈在汇编和 C 函数之间传递 8 字节值
我尝试将 fasm 代码中的三个参数传递给 c 函数:
push ebx
push eax
push esi
push edx
call _kernel_main
void kernel_main(uint8 boot_disk_id,void *memory_map,uint64 first_file_sector_number)
我的期望:
- boot_disk_id 获取edx 数据,低字节
- memory_map 获取 esi 数据,
- first_file_sector_number 获取 8 字节值,eax - 高 4 字节,ebx- 低 4 字节
假设 ebx 包含 0x0 并且 eax 包含 0x2 所以 first_file_sector_number 将获得值 0x2,
当我像这样改变位置 ebx 和 eax 时:
push eax
push ebx
push esi
push edx
call _kernel_main
我希望 first_file_sector_number 将包含 00000000 00000000 00000000 00000010 00000000 00000000 00000000 00000000 00000000 00x200000000000000 但它包含0x0。
你能告诉我我错在哪里吗。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。