参考自:http://blog.csdn.net/gy_jk/article/details/5667182
嗯……搞OI久了应该都会碰到这么一种问题
爆栈……
当然,手写栈是最普遍的一种解决方法
比如NOI2011 day2 T1,MS是临时换的一道水题,只要会手写栈就可以水过
Pascal党是很舒服的,因为可以在代码中手动把栈开大
但是c/c++党不行……因为MS栈的大小是在链接时决定的……
如果是自己测的话,可以设置gcc/g++的参数,加入-Wl,--stack=xxxx
来手动修改链接时决定的栈大小
//xxxx为栈空间大小,我一般设为一般为1后面若干0……反正是自己测……
但是这种方法在OJ或者考试的时候行不通
//因为这种方法要改编译时的参数//废话……
而又不想手写栈的同学可以考虑下面一种方法……私以为比手写栈要方便
虽然其实手写栈也挺好写的……
嗯……下面进入正题
这一段是核心代码
嗯……就是写这样一个CallFuction过程出来,然后Fuction函数在里面照调
如果需要多次调用某个函数,而且参数都不同,可以把CallFuction写成有参数的
如果需要多次调用不同的函数,而且凑巧这两个函数参数列表一样,还可以多传一个函数指针,这样Call的过程就只用写一个
它实际上是将指向栈的指针重定向到了一个数组上
而且这段代码是万金油
不管是调怎样的函数,参数有多少个,汇编的部分都是这样写
如果要知道内嵌汇编详细的方式
可以参考http://www.ibm.com/developerworks/cn/linux/l-assembly/
唯一的缺点是消耗的空间会比较大……
POI2008 sta这道题
100w个点的DFS……我硬是开了2kw的数组才能过
要不然就会re……
分享到:
相关推荐
64位Windows不支持内嵌汇编,在VC2008下将32位C++内嵌汇编迁移到64位,解决64位系统不支持内嵌汇编。
AT&T汇编语言与GCC内嵌汇编简介 linux 内核 汇编 介绍以上内容。pdf文件
内嵌汇编
在x64下实现内嵌汇编,不是采用OBJ的模式,直接把汇编转换成机器代码,让后内嵌机器代码,参数传递按照x64约定。
AT&T汇编语言与GCC内嵌汇编简介.pdf
在Linux的核心代码中,还是存在相当一部分的汇编语言代码。如果你想顺利阅读Linux代码的话,你...另一部分则是利用gcc的内嵌式汇编语言语句asm嵌在Linux的C语言代码中的。这篇文章主要是介绍第二种形式的汇编语言代码。
如何在GCC实现C语言中内嵌汇编,很好的资料
CSAPP书中补充知识:C语言内嵌汇编编程.文档简单介绍了内嵌汇编的规则,并且给出几个练习并附有参考答案.内容简洁,非常适合快速学习
ARM_GCC内嵌汇编
gcc中的内嵌汇编语言.rar gcc中的内嵌汇编语言.rargcc中的内嵌汇编语言.rar
介绍了AT&T汇编语言以及在gcc中内嵌汇编的方法
Linux0.11内核 GCC内嵌汇编
c语言内嵌汇编
AT&T汇编语言和gcc内嵌汇编,比较了Intel和AT&T汇编语言间的区别,还不错!!!
__asm__ __volatile__ GCC的内嵌汇编语法说明,看Linux内核必备
C++内嵌汇编x86实现加法,汇编原理实验实现