精华内容
下载资源
问答
  • 有人建议说,函数的参数个数最好不要超过4个,这什么呢? 这里就涉及到我们的硬件平台了,对于ARM体系来说,不同语言撰写的函数之间相互调用(mix calls)遵循的 ATPCS(ARM-Thumb Procedure Call Standard)...

    有人建议说,函数的参数个数最好不要超过4个,这是为什么呢?

    这里就涉及到我们的硬件平台了,对于ARM体系来说,不同语言撰写的函数之间相互调用(mix calls)遵循的是 ATPCS(ARM-Thumb Procedure Call Standard),ATPCS主要是定义了函数调用时参数的传递规则以及如何从函数返回。


    简单ATPCS寄存器的使用规则(内容来自网上):
    1. 子程序通过寄存器R0~R3来传递参数. 这时寄存器可以记作: A0~A3 , 被调用的子程序在返回前无需恢复寄存器R0~R3的内容.
    2. 在子程序中,使用R4~R11来保存局部变量,这时寄存器R4~R11可以记作: V1~V8 .如果在子程序中使用到V1~V8的某些寄存器,子程序进入时必须保存这些寄存器的值,在返回前必须恢复这些寄存器的值,对于子程序中没有用到的寄存器则不必执行这些操作.在THUMB程序中,通常只能使用寄存器R4~R7来保存局部变量.
    3.寄存器R12用作子程序间scratch寄存器,记作ip; 在子程序的连接代码段中经常会有这种使用规则.
    4. 寄存器R13用作数据栈指针,记做SP,在子程序中寄存器R13不能用做其他用途. 寄存器SP在进入子程序时的值和退出子程序时的值必须相等.
    5. 寄存器R14用作返回寄存器,记作lr ; 它用于保存子程序的返回地址,如果在子程序中保存了返回地址,则R14可用作其它的用途.
    6. 寄存器R15是程序计数器,记作PC ; 它不能用作其他用途.
    7. ATPCS中的各寄存器在ARM编译器和汇编器中都是预定义的.


    子程序结果返回规则
    1.结果为一个32位的整数时,可以通过寄存器R0返回.
    2.结果为一个64位整数时,可以通过R0和R1返回,依此类推.
    3.结果为一个浮点数时,可以通过浮点运算部件的寄存器f0,d0或者s0来返回.
    4.结果为一个复合的浮点数时,可以通过寄存器f0-fN或者d0~dN来返回.
    5.对于位数更多的结果,需要通过调用内存来传递.

    通过上面第一条,可理解为什么函数参数最好不要超过四个了。ATPCS建议函数的形参不超过4个,如果形参个数少于或等于4,则形参由R0,R1,R2,R3四个寄存器进行传递;若形参个数大于4,大于4的部分必须通过堆栈进行传递。

     

    当然我们也可以反汇编一段程序看看具体寄存器与参数的关系。

    int func_1(int a, int b, int c, int d)
    {
        return a + b + c + d;
    }
    
    int func_2(int a, int b, int c, int d, int e, int f)
    {
        return a + b + c + d + e + f;
    }
    
    int main(int argc, char *argv[])
    {
        func_1(11, 22, 33, 44);
        func_2(11, 22, 33, 44, 55, 66);
    
        return 0;
    }

    通过arm交叉编译工具,编译为汇编代码:arm-linux-gcc -S atpcs.c -o atpcs.s

     

    展开全文
  • PHP 外部获取函数参数个数以下文字资料由(历史新知网www.lishixinzhi.com)小编为大家搜集...func_num_args()这个函数只能在函数里面获取参数个数而不能在函数外部获取 有什么方法能在外部获取函数参数的个数呢?...

    PHP 外部获取函数参数个数以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

    b156f68eb83c21f565a64a5dc81f7651.png

    function War($a $b $c)

    {

    $n = func_num_args();

    echo $n;

    }

    War( );

    func_num_args()这个函数只能在函数里面获取参数个数而不能在函数外部获取 有什么方法能在外部获取函数参数的个数呢?

    func_num_args()得到的是传递给宿主函数的参数个数

    func_num_args()得到的是实际传递的参数个数 而不是预定义个数 所以不应该有“外部获得”的说法 PHP code

    function War()

    {

    $n = func_num_args();

    echo $n;

    }

    War( );

    War( );

    War( ); 实在要在“外部获取”倒是可以利用自定义函数的注释 用反射来获取

    PHP code <?php /** * 某自定义函数 * * @param string $a * @param string $b * @param string $c */ function War($a $b $c){} lishixinzhi/Article/program/PHP/201311/21056

    分页:123

    展开全文
  • Java方法体的字节不能超过65535字节的原因是什么,还有方法参数不能超过255是因为什么?
  • cedel:c declare(c调用约定)的缩写,c和c++程序的缺省调用方式,规则,从又向左的顺序压参数入,由调用者把参数弹出栈,对于传入参数的内存栈由调用者来维护的,正因为如此,只有这种调用方式可以实现个数不定...

    三者都是函数调用的约定。

    cedel:c declare(c调用约定)的缩写,是c和c++程序的缺省调用方式,规则是,从又向左的顺序压参数入,由调用者把参数弹出栈,对于传入参数的内存栈是由调用者来维护的,正因为如此,只有这种调用方式可以实现个数不定的入口参数(可变参数)。

    stdcall:是pascal程序的缺省调用方式,规则是,按从右向左的顺序入栈,被调用的函数在返回前清理传送参数的内存栈。

    上两者的主要区别是前者由调用者清理栈,后者由被调用的函数清理栈。当然函数名的修饰部分也是不同的。

    fastcall:采用寄存器传递参数,特点就是快了。

    展开全文
  • 福个答案2020-11-23:Golang 的字符串(string)合法的 UTF-8 序列,这就涉及到了两种不同的...sUTF-8 序列,所以在相同字符个数下,字节数不固定。s[0]byte类型,固定1个字节。golang代码如下:package maini...

    福个答案2020-11-23:

    Golang 的字符串(string)是合法的 UTF-8 序列,这就涉及到了两种不同的遍历方式,一种是按照 Unicode 的 codepoint 遍历,另一种是把 string 视为 []byte,按照字节遍历。

    s是UTF-8 序列,所以在相同字符个数下,字节数不固定。s[0]是byte类型,固定1个字节。

    golang代码如下:

    package mainimport "fmt"func main() {    s := "我爱福大大fdd"    //Unicode 的 codepoint 遍历    fmt.Println("Unicode 的 codepoint 遍历")    for i, r := range s {        fmt.Printf("%v:0x%x,%T\r\n", i, r, r)    }    fmt.Println("---------")    //字节遍历    fmt.Println("字节遍历")    for i := 0; i < len(s); i++ {        b := s[i]        fmt.Printf("%v:0x%x,%T\r\n", i, b, b)    }}

    执行结果如下:

    9e86b13bad5bb8ec472e8e1ddf1ba832.png

    ***

    [2020-11-23:go中,s是一个字符串,s[0]代表什么?是否等于固定字节数?](http://bbs.xiangxueketang.cn/question/417)

    [2020-11-23:go中,s是一个字符串,s[0]代表什么?是否等于固定字节数?](https://www.zhihu.com/question/431560886)

    展开全文
  • 当用EXECUTE IMMEDIATE执行SQL语句中的参数个数动态的?用什么方法实现?描述详细一点就是:在要执行的SQL语句中所用到(: parameter)这种参数的个数,因具体条件不同,而不同,而在执行语句EXECUTE IMMEDIATE中...
  • * 有时候,我们传入到方法的参数的个数不固定的,为了解决这问题,我们一般采用下面的方法:* 1. 重载,多重载几方法,尽可能的满足参数的个数。显然这不是什么好办法。* 2. 将参数作为一数组传入。虽然...
  • C中参数个数可变的函数

    千次阅读 多人点赞 2015-07-16 10:39:38
    我们在C语言编程中有时会遇到一些参数个数可变的函数,例如printf()函数,其函数原型为: int printf( const char* format, ...); 它除了有一个参数format固定以外,后面跟的参数的个数和类型可变的(用三个点"…"做...
  • 关于LSTM的神经元数及参数个数

    万次阅读 多人点赞 2019-03-30 21:01:37
    1、首先 tf.nn.rnn_cell.BasicLSTMCell(num_units=n)中的参数num_units指的是什么? 上图中一浅绿色大框框起来的我们暂时叫一LSTM_Cell,我们可以看到一LSTM_Cell中有四基本的神经网络Cell(即四黄色的小框...
  • java 动态调节参数个数

    千次阅读 2019-04-24 15:44:34
    paramtName) { ..........},不明白是什么意思 ,通过调用才知道这种方法的参数是可以动态调节的 ,就是我可以同类型的参数传无数过来 ,话不多说,直接上代码 public static int sum(int a, int... s) { for (i....
  • Java方法的可变参数个数 标签: Java方法可变参数个数 2014-08-29 10:00 39375人阅读 评论(17) 收藏 举报  分类: JAVA(251)  原文:Java方法的可变参数类型 许多Java新人在...
  • pytorch 统计模型参数个数

    千次阅读 2019-12-26 15:52:12
    用resnet50 来举例子 print("resnet50 have {} paramerters in total".format(sum(x.numel() for x in resnet50.parameters()))) ...另外,两个是一样的,方便debug看其中到底有什么东西 num_params = 0 ...
  • Delphi的参数传递约定以及动态参数个数(转载笔记) 《Delphi中的参数传递约定概述》 由于Delphi太好用了以至于大多数Delphifans对Delphi约定都没什么认识... 抱歉其实大部分人的确这样的 这里写下一篇浊文仅供...
  • 在调用socket的时候,我们会使用到listen()函数,里面有个参数叫backlog, 例如:socket.listen(5). 那么这数字5到底代表什么意思呢? 解答 下面使用具体的代码片段来讲解:这电脑本机模拟客服端及服务端的...
  • 今天在看jquery的时候里面用到了parseFloat(第一个参数,10),一直不懂第二个参数是什么意思,于是上网查了一下,怕以后忘记就记下来。 定义和用法:parseFloat() 函数可解析一字符串,并返回一浮点数。 语法...
  • 最近整理了一下公司规范,其中“函数的参数个数不宜超过4个”这一条在推广的时候有些争议,在能完成任务的情况下参数越少肯定越好,这本身没什么可争议的,但这样做可能会在编程时带来困难,争议点在是否值得这样做...
  • 摘自:... 那么这数字5到底代表什么意思呢?网上有很多种说法,讲的都概念,很多都复制粘贴,容易让人误解。解答下面使用具体的代码片段来讲解:这电脑本机模...
  • 需求描述:  在写shell脚本的时候,会有这样的... 知道当前传递给脚本的参数的数量,如果0,就执行使用说明的显示。 实现方法:  脚本中通过$#来判断,当前传递给脚本的参数的数量。 测试脚本: #!/b...
  • 关于这StackOverflow的所有答案说,技术限制255个参数,没有指定为什么。准确地说,255静态的,254是非静态的( this将这种情况下的255)方法。我认为这可以用某种规范来描述,并且只有一静态定义的允许的...
  • LSTM神经元中参数个数

    千次阅读 2019-04-23 17:03:30
    LSTM的神经元个数 1. LSTM简单介绍 上图中间位置就是一个LSTM cell,红框框从左到右,依次: 忘记门层: 决定从细胞状态中丢弃什么信息,通过当前时刻输入(xtx_{t}xt​)和前一个时刻输出(ht−1h_{t-1}ht−1​)...
  • 定义一函数非常简单,但是怎么定义一函数,需要什么参数,怎么去调用却我们需要去思考的问题。如同大多数语言一样(如 Java),Python 也提供了多种参数的设定(如:默认值参数、关键字参数、形参等)。使用这些...
  • 位置参数位置参数是Python中最常见的参数什么是位置参数?函数的参数在调用传值时,默认参数的位置顺序传值的,即形参的顺序与实参的顺序一一对应,这种参数称为位置参数。我们定义一info()函数,这函数中...
  • 一般情况下,main函数带有两个参数,分别为int argc和char* argv[],各自表示参数个数、参数选项。比如在cmd窗口中运行ping www.csdn.net -t,那么传到ping程序的main函数的两个参数argc=3,argv[]={"ping",...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 6,307
精华内容 2,522
关键字:

参数个数是什么