可能大家厌倦了传统的在C,C++中嵌入代码的痛苦,%要写两遍,而且一大堆规范,嵌套起来看得很不爽,好,下面让大家看另一种纯正的嵌入,大家可能会问,太“淫”了吧,毫无价值啊,要知道如果你想要做一些乱序的话,先写一遍函数,然后Objdump例如我们先写了这个add函数,然后用下面提到的这种方法,控制好计算顺序,你懂的,再多写就废话了。
关键一点:asm("add2:");是一定要加的,否则编不过,将来说道乱序还会用到这里的方法,先做个引子,如果大家都懂,就当我班门弄斧,不过我在网上确实还鲜有看到这种代码。
如果改成c++的代码,还需要加一个函数说明,大家自己尝试吧。
#include <stdio.h>
/* objdmp -d test后摘录的add函数的代码段,直接复制到就可以构成一个函数嵌入
0000000000400498 <add>:
400498: 55 push %rbp
400499: 48 89 e5mov %rsp,%rbp
40049c: 89 7d ecmov %edi,0xffffffffffffffec(%rbp)
40049f: 89 75 e8mov %esi,0xffffffffffffffe8(%rbp)
4004a2: 8b 45 e8mov 0xffffffffffffffe8(%rbp),%eax
4004a5: 03 45 ecadd 0xffffffffffffffec(%rbp),%eax
4004a8: 89 45 fcmov %eax,0xfffffffffffffffc(%rbp)
4004ab: 8b 45 fcmov 0xfffffffffffffffc(%rbp),%eax
4004ae: c9 leaveq
4004af: c3 retq
*/
int add(int a, int b)
{
int ret = a+b;
return ret;
};
asm(" .text ");
asm(" .type add2, @function ");
asm("add2: ");
asm(" push %rbp ");
asm(" mov %rsp,%rbp ");
asm(" mov %edi,0xffffffffffffffec(%rbp) ");
asm(" mov %esi,0xffffffffffffffe8(%rbp) ");
asm(" mov 0xffffffffffffffe8(%rbp),%eax ");
asm(" add 0xffffffffffffffec(%rbp),%eax ");
asm(" mov %eax,0xfffffffffffffffc(%rbp) ");
asm(" mov 0xfffffffffffffffc(%rbp),%eax ");
asm(" leaveq ");
asm(" retq ");
int main(void)
{
int a=1,b=1;
printf("sum1:%d,sum2:%d\n",add(a,b),add2(a,b));
return 0;
}
编译方法:gcc test.c -o test
本系列其他文章:http://blog.csdn.net/pennyliang/category/746545.aspx
分享到:
相关推荐
星火考研系列是针对准备研究生入学考试(简称考研)的学生提供的一种学习资源,其中的“巧计速计”方法是针对英语单词记忆的一种技巧性、高效的学习方法。艾宾浩斯记忆曲线则是心理学家赫尔曼·艾宾浩斯提出的理论,...
【巧计英语7000单词】是一种创新的英语词汇学习方法,旨在通过800个有趣且富有挑战性的句子帮助学习者记忆7000个英语单词。这种方法强调趣味性和实用性,使得学习过程不再枯燥乏味。这些句子涵盖了广泛的词汇,包括...
标题“小学数学数学故事小女儿巧计救父”讲述了一个智慧与解决问题能力的故事,通过一个小学数学问题展示了逻辑思维在日常生活中如何应用。这个故事的核心是利用数学知识解决实际问题,特别是涉及到数量、交易和条件...
个省级行政区的名称和位置巧计PPT教案.pptx
试听巧计10000单词,杨金明 往年的参考资料,仅共参考
标题提到的“英语谚语巧计单词700词汇任你掌握”暗示了一种通过学习英语谚语来记忆单词的方法。这种方法利用了谚语的韵律感和故事性,使单词的记忆过程变得有趣且易于接受。例如,“Anthropologists have discovered...
速查巧计手册是一种便于携带和快速查找的工具书,它将大量的概念、公式、定理等信息进行分类整理,使得使用者能够迅速找到所需信息。在考研数学的复习过程中,这种手册可以大大提高复习效率,帮助考生在短时间内掌握...
初中语文文摘历史苏军巧计“忽悠”希特勒
个省级行政区的名称和位置巧计.pptx
个省级行政区的名称和位置巧计学习教案.pptx
在英语写作中,短文改错是一项常见的任务,旨在提高学生的语法、拼写和用词准确性。本资料主要探讨了纠正文章错误的步骤和常见问题,以及如何关注动词形态、名词数量、代词格、句子成分、冠词连词等关键点。以下是...
自己复习托福 才知道但背单词有多艰难 无论是词根式还是其他方法 这是我见到的最好的方法了 共享给大家
考研英语词汇巧计。20天内记住考研词汇,拥有去的故事记住考研英语单词
考试是检验学习成果的一种方式,文件中提到了一些应对考试的策略,比如熟悉考试流程、加强记忆、找到适合自己的复习方法等。同时,保持良好的心态对于考试成功同样重要,包括调节紧张情绪、积极面对复习挑战等。 10...
31.下一个排列----巧计 32.(hard)最长有效括号----栈 33.搜索旋转排序数组----二分查找 34.在排序数组中查找元素的第一个和最后一个位置----二分查找 39.组合总和----回溯 42.(hard)接雨水----双指针或栈 46....
2. "7、考研数学阅卷人概念·公式·定理速查巧计手册(190页).pdf":这是一份为考研准备的速查手册,涵盖了阅卷人关注的概念、公式和定理,对于快速回顾和记忆关键知识点很有帮助。 3. "28、不定积分公式大全.pdf":...
《考研数学概念公式定理手册》是一本为准备参加研究生入学考试的学生提供的数学参考书籍。这本手册主要涵盖了数学中的基本概念、重要的公式和定理,是考研数学复习的重要资料。由于内容都是通过OCR扫描获得,可能...
元素符号的规则是基于拉丁文的首字母,遵循“首大附小”的原则,即第一个字母用大写,第二个字母如果有的话则用小写。例如,氢的元素符号是H,氧是O,磷是P,如此类推。通过这些简化的符号,我们可以快速识别和记忆...
北魏孝文帝的改革是历史上一次重大变革,旨在整合鲜卑族与汉族的文化与制度,加强中央集权,促进社会经济发展。以下是改革的主要内容及其影响的详细解析: 一、卓有成效的新制 1. 主持者:孝文帝拓跋宏(元宏)。 ...
标签中的“软考”指的是中国的信息技术专业人员资格考试,其中项目管理工程师属于其中一部分,即信息系统项目管理师考试。 结合部分内容,我们可以了解到: 1. 文档提到了项目管理的全过程,强调了对44个过程的...