关键词搜索

源码搜索 ×
×
C

C语言的本质(32)——C语言与汇编之C语言内联汇编

用C写程序比直接用汇编写程序更简洁,可读性更好,但效率可能不如汇编程序,因为C程序毕竟要经由编译器生成汇编代码,尽管现代编译器的优化已经做得很好了,但还是不如手写的汇编代码。另外,有些平台相关的指令必须手写,在C语言中没有等价的语法,因为C语言的语法和概念是对各种平台的抽象,而各种平台特有的一些东西就不会在C语言中出现了,例如x86是端口I/O,而C语言就没有这个概念,所以in/out指令必须用汇
JAVA

java学习笔记:eclipse的workspace和working set

我将这二个东西搞混了。看上去,workspace类似于VS里的解决方案,而workingset则像VS里的解决方案文件夹,是个逻辑概念。VS里的解决方案是个文件,而eclipse里的workspace,则是一个真实存在的文件夹。另外,VS里的解决方案文件夹,隶属于解决方案;但在eclipse里,workspace和workingset是两个不同的视图。当workspace项目很多的时候,可以建立w
JAVA

java学习笔记:Eclipse打开现有项目

初学JAVA,觉得困难重重。多年来,已经习惯了微软系列的VS,现在使用Eclipse,觉得差别很大。比如打开一个现有项目。并没有什么所谓的项目文件,如*.sln,*.cproj什么的。那怎么打开?一、首先要建立workingset。workingset,顾名思义,就是工作集。这个东西,就好像QQ的好友分组似的,完全由你自己定,各种项目挂于其下,猜测是为了方便我们开发。如果我们还没有workings
C

C语言的本质(30)——C语言与汇编之ELF文件格式

ELF(ExecutableandLinkingFormat)文件格式是一个开放标准,各种UNIX系统的可执行文件都采用ELF格式,ELF是一种对象文件的格式,用于定义不同类型的对象文件(Objectfiles)的内容是什么、以及都以怎样的格式去存放这些内容。它有三种不同的类型:1、 可重定位的目标文件(Relocatable)这是由汇编器汇编生成的.o文件。后面的链接器把一个或多个可重
C

C语言的本质(29)——C语言与汇编之寄存器和寻址方式

x86的通用寄存器有eax、ebx、ecx、edx、edi、esi。这些寄存器在大多数指令中是可以任意选用的,比如movl指令可以把一个立即数传送到eax中,也可传送到ebx中。但也有一些指令规定只能用其中某些寄存器做某种用途,例如除法指令idivl要求被除数在eax寄存器中,edx寄存器必须是0,而除数可以在任意寄存器中,计算结果的商数保存在eax寄存器中,而原来的被除数被覆盖掉,余数保存在ed
C

C语言的本质(27)——C语言与汇编之计算机结构

 现代计算机都是基于冯·诺依曼或哈佛体系结构的,不管是嵌入式系统、个人电脑还是服务器。这种两种体系结构的主要特点是:CPU和内存是计算机的两个主要组成部分,内存中保存着数据和指令,CPU从内存中取指令执行,其中有些指令让CPU做运算,有些指令让CPU读写内存中的数据。 冯·诺依曼结构冯·诺依曼结构也称普林斯顿结构,是一种将程序指令存储器和数据存储器合并在一起的存储器结构。程序指
C

C语言的本质(28)——C语言与汇编之用汇编写一个Helloword

为了更加深入理解C语言的本质,我们需要学习一些汇编相关的知识。作为最基本的编程语言之一,汇编语言虽然应用的范围不算很广,但是非常重要。因为它能够完成许多其它语言所无法完成的功能。就拿Linux内核来讲,虽然绝大部分代码是用C语言编写的,但仍然不可避免地在某些关键地方使用了汇编代码,其中主要是在Linux的启动部分。由于这部分代码与硬件的关系非常密切,即使是C语言也会有些力不从心,而汇编语言则能够很
C

C语言的本质(26)——C标准库之数值字符串转换

C语言提供了几个标准库函数,可以将任意类型(整型、长整型、浮点型等)的数字转换为字符串。#include<stdlib.h>intatoi(constchar*nptr);atoi把一个字符串开头可以识别成十进制整数的部分转换成int型。参数nptr字符串,如果第一个非空格字符存在,是数字或者正负号则开始做类型转换,之后检测到非数字(包括结束符\0)字符时停止转换,返回整型数。否则,返
C

C语言的本质(17)——回调函数

如果函数的参数是一个函数指针,我们可以通过这个函数指针传递一个函数的地址给另外一个函数,当这个指针被用来调用其所指向的函数时,我们就说这是回调函数(CallbackFunction)。回调函数不是由该函数的实现方直接调用,而是在特定的事件或条件发生时由另外的一方调用的,用于对该事件或条件进行响应。因为可以把调用者与被调用者(实现者)分开,所以调用者不关心谁是被调用者。它只需知道存在一个具有特定原型
C

C语言的本质(15)——C语言的函数接口入门

C语言的本质(15)——C语言的函数接口 函数的调用者和其实现者之间存在一个协议,在调用函数之前,调用者要为实现者提供某些条件,在函数返回时,实现者完成调用者需要的功能。函数接口通过函数名,参数和返回值来描述这个协议,只要函数名和参数名命名合理,参数和返回值的类型定义的准确,调用者仅仅通过函数接口就能知道函数的用法。当函数接口不能表达函数的全部语义时,文档就起了重要的补充作用,函数文档的
C

C语言的本质(16)——函数接口的传入参数与传出参数

 如果函数接口有指针参数,既可以把指针所指向的数据传给函数使用(称为传入参数),也可以由函数填充指针所指的内存空间,传回给调用者使用(称为传出参数),例如strcpy的函数原型为 char*strcpy(char*dest,constchar*src);其中src参数是传入参数,dest参数是传出参数。有些函数的指针参数同时担当了这两种角色,如select函数。其函数原型为:i
C

C语言的本质(10)——指针本质

 指针,大概是C语言中最难理解的概念之一了。指针这个东西是C语言中的一个基本概念,C99中对于指针的定义是:1.指针的类型是derivedfrom其它类型,也就是说指针的类型是由它指向的类型决定的;2.指针是一种reference类型,即引用类型; 指针这个词出现在高级语言程序设计中,在汇编中,就没有指针这个概念,有的只是地址。计算机的每一个内存单元都是编址的,对内存的访问都是
点击QQ咨询
开通会员
返回顶部
×
微信扫码支付
微信扫码支付
确定支付下载
请使用微信描二维码支付
×

提示信息

×

选择支付方式

  • 微信支付
  • 支付宝付款
确定支付下载