API Caller,计算机网络和算法



我只是一个高中生,对编程有深切的热情,我学习不好,但是玩编程也玩了三年多年了,最近建了一个CSDN博客,看见有个征文,于是也来凑凑热闹:)若有路过的前辈和大神望能指点一二:)

计算机程序是什么?从本质上说,程序是一段二进制机器码!本身是0和1的组合,由具体的机器来执行这些机器码,也就是说机器码是给机器读的一份指令,机器按照指令去执行操作(往往是读写寄存器或内存)。因为人们直接用机器码写程序简直是在燃烧脑细胞啊有木有,于是人们发明了汇编语言,随后,C,C++,C#,F#,JAVA,PHP等等等等语言就冒了出来,简直是各领风骚数百年啊。不知道各位看官发现没有,之所以出现了这种进步(退步?),是为了编写程序更加方便吗,那肯定是的,换一句话说,是为了让程序员能够更容易地构建自己的算法,而不必为了繁琐的语法而浪费时间和精力。

算法究竟是什么?顾名思义,算法就是解决问题的方法,要是按照这个思路,那么算法可谓是渗透到了计算机这个神奇的世界里。

例子1:API Caller
API(应用程序接口),是对各种平台编程中的核心,我看到征文那儿的评论里就有个人说,现在的程序员很多都是API Caller,我一想这话太对了,就像我一样,整天泡在MSDN资料库里翻API文档,毕竟Windows内核都有人设计的非常完善了,API又非常丰富,调用API,就能解决大部分的问题,但是我们一行代码就能调用了的API,是如何运作的呢?API的调用,难道就不是一种算法吗?如果没有算法,API也不会出现了。

(1)Windows对API的处理过程

当我们从SDK调用一个API时,我们调用的是头文件中的函数。头文件中的函数会在编译时编译成“弱符号”,连接器会把弱符号的调用定位到有导出函数的lib库中,lib中有函数的定义,函数定义已经被编译成“强符号”并导出了,所以,我们其实调用的是lib里的函数,但lib里的函数却并不是真正的API实现,它们只是进一步调用了在IAT(函数导入地址表)中的函数,也就是Win32子系统的dll动态连接库中的函数,IAT就是在PE装载器通过exe的导入表中的dll导入目标进程的虚拟内存后由系统构建的,当然,如果dll建议的装入位置与虚拟内存中现有的模块(PE文件装入内存

  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值