前情提要
每个搞过竞赛的同学可能都想象过通过内嵌汇编来提高程序效率,然而对于绝大多数同学来说,可能也只是开开玩笑而已,毕竟CCF的考纲里面明确写了不许内嵌汇编。
我就是众多只在嘴上说说的人之一,反正中学六年我最终还是没有写过一句内嵌汇编。
当然这只是因为我基本不会汇编(捂脸)
今天由于某些特殊原因(解释起来太长),我又一次想到了在编写C程序的时候使用汇编,然后就开始了今天晚上的人在囧途之旅~
为方便叙述,本文中代码一律使用C而不是C++,系统环境采用Linux(Windows下出问题别来找我)
内嵌汇编?
纵使我是一个渣渣,我也知道想要在C中使用汇编有两种方式:
- 在C的代码里面内嵌汇编
- 把汇编编译成单独文件,然后再链接起来
本着从易到难的原则,我决定先从内嵌汇编试起。
可是谁告诉你内嵌汇编简单了?
查完了某度,刚准备动手,猛然注意到文章中说的都是VC。常识告诉我,巨硬会用它自己的汇编器MASM,这显然会与我现在使用的gcc有区别。
于是又一次某度过后,我发现gcc的汇编器GAS用的是AT&T风格的汇编,跟我略微会那么一点点的x86汇编完全不一样。
没有办法,硬着头皮凭借自己瞎撸的本事靠感觉写出几行AT&T风格的汇编。
结果呢