zoukankan      html  css  js  c++  java
  • Win 64 register usage

    http://www.mouseos.com/win64/registers.html

    Seems UEFI using rcx, rdx, r8, r9, r10, r11, r12 to store argv

    下面是摘自 MSDN 的文章,在 Win64 下的 registers 用途

    Register
    Status
    Use
    RAX Volatile Return value register
    RCX Volatile First integer argument
    RDX Volatile Second integer argument
    R8 Volatile Third integer argument
    R9 Volatile Fourth integer argument
    R10:R11 Volatile Must be preserved as needed by caller; used in syscall/sysret   instructions
    R12:R15 Nonvolatile Must be preserved by callee
    RDI Nonvolatile Must be preserved by callee
    RSI Nonvolatile Must be preserved by callee
    RBX Nonvolatile Must be preserved by callee
    RBP Nonvolatile May be used as a frame pointer; must be preserved by   callee
    RSP Nonvolatile Stack pointer
    XMM0 Volatile First FP argument
    XMM1 Volatile Second FP argument
    XMM2 Volatile Third FP argument
    XMM3 Volatile Fourth FP argument
    XMM4:XMM5 Volatile Must be preserved as needed by caller
    XMM6:XMM15 Nonvolatile Must be preserved as needed by callee.

    1. 传递参数

    在 Win64 里使用下面寄存器来传递参数:

    • rcx - 第 1 个参数
    • rdx - 第 2 个参数
    • r8 - 第 3 个参数
    • r9 - 第 4 个参数

    其它多出来的参数通过 stack 传递。

    使用下面寄存器来传递浮数数:

    • xmm0 - 第 1 个参数
    • xmm1 - 第 2 个参数
    • xmm2 - 第 3 个参数
    • xmm3 - 第 4 个参数
  • 相关阅读:
    【转】 cin、cin.get()、cin.getline()、getline()、gets()等函数的用法
    HDU How many prime numbers
    《大学ACM的总结 》(转载)
    POJ 最小公倍数
    HDU 开门人和关门人
    HDU shǎ崽 OrOrOrOrz
    HDU Saving HDU 2111
    HDU 1106 排序
    strtok函数()
    HDU 2187汶川地震
  • 原文地址:https://www.cnblogs.com/yinguo/p/4731983.html
Copyright © 2011-2022 走看看