当前位置: 首页 > 编程笔记 >

Intel x86 Assembly& Microarchitecture 64位Windows

都超英
2023-03-14
本文向大家介绍Intel x86 Assembly& Microarchitecture 64位Windows,包括了Intel x86 Assembly& Microarchitecture 64位Windows的使用技巧和注意事项,需要的朋友参考一下

示例

参数

前4个参数按顺序传递RCX,RDX,R8和R9。XMM0至XMM3用于传递浮点参数。

任何其他参数都在堆栈上传递。

大于64位的参数按地址传递。

溢出空间

即使函数使用少于4个参数,调用方也始终在堆栈上为4个QWORD大小的参数提供空间。被调用者可以随意将它们用于任何目的,通常将参数复制到那里,如果它们会被另一个调用所溢出。

返回

对于标量返回类型,返回值放在RAX中。如果返回类型大于64位(例如,对于结构),则RAX是指向该类型的指针。

保存和破坏的寄存器

被调用者可以溢出用于参数传递的所有寄存器(RCX,RDX,R8,R9和XMM0至XMM3),RAX,R10,R11,XMM4和XMM5。所有其他寄存器都需要由调用方保留(例如,在堆栈上)。

堆栈对齐

堆栈必须保持16字节对齐。由于“ call”指令将一个8字节的返回地址压入,这意味着每个非叶函数都将以16n + 8形式的值来调整堆栈,以恢复16字节的对齐方式。
呼叫后,清理堆栈是呼叫者的工作。

来源:调用约定的历史,第5部分:amd64 Raymond Chen

 类似资料:
  • 我目前正在学习位操作,我的任务是做一个左旋转的4位整数。 我的4位左旋转代码是 我想做一个4位循环移位,以保持作为一个4位后旋转,但似乎不能理解它是如何工作的。 例如:10(1010)左旋转1位后给出5(0101),但它给出的值是21,比我的4位多。 任何能让我理解这个问题的帮助都将不胜感激!

  • 问题内容: 我已经使用Java一段时间了,而我典型的设置新开发机的习惯要求从Oracle站点下载并安装最新的JDK。 今天这引发了一个不寻常的问题, 回想起来,我已经安装了之前的两个版本,并且很高兴将普通的工具链插入(Eclipse)。在我的日常编程中,我不会回想起曾经因为使用64位JRE(或为此目的而针对64位JRE)而不得不以其他方式进行更改或思考的事情。 根据我对64位和32位的理解- 确实

  • 我必须编写一个函数,对y位置的位进行左循环移位。例如,如果我将:01011000和2作为y,则函数必须返回011000001。 我已经尝试使用但它似乎是无用的。

  • 问题内容: 我的电脑正在使用Windows 7 64位。但是将要部署我的jsp Web应用程序的服务器是32位。 我需要在PC上安装32位JDK / JRE才能进行开发吗?我正在使用Eclipse。 非常感谢你。 问题答案: 您绝对不需要安装32位JRE即可进行开发。您构建的Java代码不会跟踪您的64位。(我假设您没有使用JNI,这会使事情变得有些复杂。) 不过,您 可能 需要安装32位JRE进

  • 问题内容: 我正在创建一个非常简单的应用程序,该应用程序可以读取和显示文本文件并进行搜索。 我问自己是否有兴趣向用户提出32位和64位版本。 区别仅在于使用64位版本访问更多的内存堆大小,还是还有其他兴趣? 32位编译程序是否可以在64位JVM上运行(我认为是) 问题答案: 任何 程序的32位和64位版本之间的唯一区别是机器字的大小,可寻址内存的数量以及所使用的操作系统ABI。对于Java,语言规

  • 操作步骤: ①在"定位监控"模块,开启"实时监控"开关。 ②点击"实时位置",进入实时位置。 ③协作成员在手机端登录亿景智图APP,并允许访问位置服务,进入协作地图。协作成员在APP登录后实时定位头像由灰色变亮。 ④协作成员在APP登录后实时定位头像由灰色变亮。 提示: ●项目实施过程中,开启位置监控功能,管理人员(地图管理员、成员)可以在地图上实时查看成员的具体位置,方便工作协调和任务分派。 ●

  • 问题内容: 当遇到按位移位运算符时,我遇到了一个有趣的场景。如果第二个操作数为负,按位移位运算如何工作?。 即,<< << b,“ <<”将a中的位模式向左移动b位。但是,如果b为负数,在运行时是否应该出错? 我能够成功运行以下代码,但我不知道它是如何工作的? 输入项 结果 “ a”的ASCII码为97。有人可以帮助我了解其工作原理吗? 问题答案: 但是,如果b为负数,在运行时是否应该出错? 不符

  • 席位持仓数据 接口名称 broker_positions 接口描述 席位持仓数据接口 请求参数 参数名 说明 举例 broker 席位 永安期货 date 查询日期 2018-08-08 返回参数 参数名 类型 说明 code string 合约代号 long int 多头持仓 short int 空头持仓 long_chge int 多头持仓变化量 short_chge int 空头持仓变化量