程序可能有争论吗?

时间:2014-11-11 21:26:31

标签: assembly

我想知道汇编是否有可能有一个使用参数的过程? 我是装配新手,不确定这是否可能。 如果是这种情况会很棒,因为它会真正流式传输我的代码。

1 个答案:

答案 0 :(得分:0)

你的问题是这样的事情是否可行:

call my_function, arg1, arg2

如果这是你的问题你还没有完全理解汇编程序的概念和CPU的功能,那么:

在汇编程序代码中,一个汇编程序指令通常等于一个CPU指令。 CPU根本没有函数参数的概念。函数参数是高级编程语言的概念。

更高级的编程语言必须将函数参数的概念“转换”为寄存器操作。例如,在ARM CPU上,通常在寄存器R0-R3中传递函数的前四个参数。

以下C代码......

myFunction(6,7,8,9);

...在汇编程序中看起来像这样:

ldr R0, =6     # Load 6 into register R0
ldr R1, =7     # Load 7 into register R1
ldr R2, =8     # Load 8 into register R2
ldr R3, =9     # Load 9 into register R3
bl myFunction  # Call myFunction()

在x86 CPU上,它有点复杂,因为有多个所谓的调用约定,这意味着参数传递给函数的方式因函数而异。