汇编语言中的call是啥意思
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了汇编语言中的call是啥意思相关的知识,希望对你有一定的参考价值。
意思:指REMOTE CALL、游戏CALL,指一种注入外部EXE程序从外部调用函数的技术。找CALL一般使用OD等工具,而CALL的使用一般需要编写复杂的汇编代码。
call指令的用法
1、call+标号
这个指令是先将call+标号的下一条语句的IP放入栈中,然后使当前的IP+16位位移。
jmp有个指令格式是:jmp near ptr标号,这里的call唯一这种jmp多的一步就是多了一次入栈操作;
call far ptr+标号
这个指令是先将call指令的下一个指令的代码段地址入栈,再把call下一条指令的偏移地址入栈,然后使其跳到标号所在处。
jmp指令的:jmp far ptr标号,这种jmp的使用是在段间转移的,这种call和jmp的区别就是多了两次入栈的操作;
3、call+16位寄存器
这个指令先将call的下一条指令的IP入栈,然后再以ax为IP的代码处
jmp指令:jmp+16位寄存器,这里的call唯一比jmp多的一步就是多了一步入栈操作;
扩展资料:
VB关键字(调用)
用于将程序的执行交给其他的代码段,通常是一个子例程,同时保存必要的信息,从而使被调用段执行完毕后返回到调用点继续执行。
描述
将控制权传递给Sub过程或Function过程。
语法
[Call]name[argumentlist]
Call语句语法有以下部分:
部分描述
Call可选关键字。如果指定此关键字,则必须用括号把argumentlist括起来。例如:
Call MyProc(0)
name必选。要调用的过程名。
argumentlist可选。传递给过程的变量、数组或表达式列表,用逗号分隔每一项。
说明
在调用过程时,不必使用Call关键字。然而,如果使用Call关键字调用要求参数的过程,则必须用括号将argumentlist括起来。如果省略Call关键字,那么必须也同时省略argumentlist参数两边的括号。使用Call语法调用内部函数或使用用户自定义函数,函数返回值都会被放弃。
参考资料:
百度百科——call
是“调用子程序”的意思。
VMULL中的最后一个L在arm neon汇编语言中是啥意思
【中文标题】VMULL中的最后一个L在arm neon汇编语言中是啥意思【英文标题】:what does the last L in VMULL mean in the arm neon assembly languageVMULL中的最后一个L在arm neon汇编语言中是什么意思 【发布时间】:2013-06-28 21:09:05 【问题描述】:我开始学习 arm asm。现在我想知道指令 vmull.u8 q7, d0, d4 中的最后一个“l”是什么意思?我发现这里解释的指令 VMULcond 和 Condition codes 解释了可用的不同条件,但由于 vmull 中的最后一个“l”不在列表中,我不明白它的意思。
【问题讨论】:
【参考方案1】:“长”
乘以两个定点数会得到双倍长度的“长”结果,因此需要双倍的寄存器宽度来存储结果。
所以 s8 x s8 => s16 结果。
这在技术上是任何定点乘法所必需的,以便以完美的精度存储结果,因为将两个“n”位数相乘需要(2 * n) - 1
位与VMULL
用于有符号数(2 * n)
用于无符号数。但有时在算术中,您只对较小的整数进行运算,而不关心高位,因此您可以使用更快且需要更少寄存器的VMUL
。有时在信号处理中,如果您表示某种十进制格式(有时称为"Q" numbers),例如使用 16 位有符号数字(s16)的 Q15,那么您实际上不需要 lower 位, NEON 也通过VQDMLH
提供此功能。无论您需要什么,NEON 都能做到。
【讨论】:
实际上,对于无符号乘法,您需要所有2 * n
位。最大可能的产品为原始宽度 (vaddw
) 的另外两个添加留出了空间,但不是,例如,左移。【参考方案2】:
可选条件码主要适用于 Thumb 模式。在 ARM 模式下,唯一有条件可执行的 NEON 指令是与 VFP 共享的指令。 (例如 VLDM)
显然您正在阅读最新版本的 ARM NEON 指南 (5.03)
由于一些未知的原因,它缺少所有那些对 IMO 非常重要的长、宽和窄变体。获取列出所有变体的早期版本。
【讨论】:
以上是关于汇编语言中的call是啥意思的主要内容,如果未能解决你的问题,请参考以下文章