摘要: shell脚本是一个包含一系列命令序列的文本文件。当运行这个脚本文件时,文件中包含的命令序列将得到执行。实际上和在shell中输入命令是一样的效果。 在Shell中引号分为2种:单引号、双引号。 (1)双引号 由双引号括起来的字符,除$、倒引号和反斜线(\)仍保留其特殊功能外,其余字符通常作为普通字符对待。 (2)单引号 由单引号括起来的字符都作为普通字符出现。一个例子:#!/bin/sh //这个正确read nfor((k=1;k<=$n;k++))doa=`expr $k \* $k`echo "$k square= $a"done#!/bin/sh //这个有 阅读全文
posted @ 2011-09-19 08:54 auleaf 阅读(173) 评论(0) 推荐(0) 编辑
摘要: 有了动态内存分配的基础,要实现链表就不难了。 所谓链表,就是用一组任意的存储单元存储线性表元素的一种数据结构。链表又分为单链表、双向链表和循环链表等。我们先讲讲单链表。所谓单链表,是指数据接点是单向排列的。一个单链表结点,其结构类型分为两部分: 1、数据域:用来存储本身数据 2、链域或称为指针域:用来存储下一个结点地址或者说指向其直接后继的指针。 例:typedef struct node{ char name[20]; struct node *link;}stud; 这样就定义了一个单链表的结构,其中char name[20]是一个用来存储姓名的字符型数组,指针*link是一个用... 阅读全文
posted @ 2011-09-19 08:52 auleaf 阅读(236) 评论(0) 推荐(0) 编辑
摘要: linux内核源代码情景分析 非扫描版 上下册合订版 字清楚 带书签 1575页 pdfhttp://download.csdn.net/source/2002579*************************************************************linux设备驱动开发详解 pdf,针对ARM9 s3c2410 经典 宋宝华http://download.csdn.net/source/3135744随书光盘:http://download.csdn.net/source/2530660********************************** 阅读全文
posted @ 2011-09-19 08:51 auleaf 阅读(178) 评论(0) 推荐(0) 编辑
摘要: 在ARM处理器的汇编语言中,对指令语法格式中的<shifter_operand>的常数表达式有这样的规定:“该常数必须对应8位位图,即常数是由一个8位的常数循环移位偶数位得到的。”首先从ARM指令系统的语法格式说起。一条ARM指令语法格式分为如下几个部分:<opcode>{<cond>}{S} <Rd>,<Rn>{,<shifter_operand>}其中,<>内的项是必须的,{}内的项是可选的,如<opcode>是指令助记符,是必须的,而{<cond>}为指令执行条件,是可选的,如果不 阅读全文
posted @ 2011-09-19 08:49 auleaf 阅读(573) 评论(0) 推荐(0) 编辑
摘要: 带状态切换的跳转指令:BX 汇编格式: BX{<cond>} Rm 功 能: BX 指令跳转到指令中所指定的目标地址,并实现状态的切换。Rm 是一个表达目标地址的寄存器。当Rm 中的最低位Rm[0] 为 1 时,强制程序从ARM 指令状态跳到Thumb 指令状态;当 Rm 中的最低位Rm[0]为0 时,强制程序从Thumb 指令状态跳到ARM 指令状态。 BX 指令示例 CODE32 ;ARM 程序段,32 位编码 arm1 ADR R0,thumb1+1 ;伪指令,把语句标号thumb1 所在地址 ;赋给R0 ,末位R0[0] 置1 ,要跳转THUMB 指令集;THUMB 指令集 阅读全文
posted @ 2011-09-19 08:49 auleaf 阅读(3013) 评论(0) 推荐(0) 编辑
摘要: CPSR有4个8位区域:标志域(F)、状态域(S)、扩展域(X)、控制域(C)C 控制域屏蔽字节(psr[7:0])X 扩展域屏蔽字节(psr[15:8])S 状态域屏蔽字节(psr[23:16])F 标志域屏蔽字节(psr[31:24])常用于MRS或MSR指令,用于psr中的值转移到寄存器或把寄存器的内容加载到psr中.如: MSR CPSR_c,#0xd3 阅读全文
posted @ 2011-09-19 08:48 auleaf 阅读(331) 评论(0) 推荐(0) 编辑
摘要: 同学们在学习ARM指令时,多数都会对adr和ldr这两个命令产生疑惑,那他们究竟有什么区别呢?其实这两个都是伪指令:adr是小范围的地址读取伪指令,ldr是大范围的读取地址伪指令。可实际上adr是将基于PC相对偏移的地址值或基于寄存器相对地址值读取的为指令,而ldr用于加载32为立即数或一个地址到指定的寄存器中。到这儿就会看到其中的区别了。如果在程序中想加载某个函数或者某个在联接时候指定的地址时请使用adr,例如在lds中需要重新定位的地址。当加载32为的立即数或外部地址时请用ldr。我给大家先举个例子:AREA test,CODE,READONLY ENTRYldr r0,_start ad 阅读全文
posted @ 2011-09-19 08:47 auleaf 阅读(402) 评论(0) 推荐(0) 编辑
摘要: 最近发现了一个问题,是关于char *和char [ ]的区别见程序如下:#include "stdafx.h"#include "string.h"#include "stdio.h"int main(int argc, char* argv[]){ char source[]="This is a source sentence"; //char *source="This is a source sentence"; strtok(source,"a"); printf 阅读全文
posted @ 2011-09-19 08:42 auleaf 阅读(339) 评论(0) 推荐(0) 编辑
摘要: #include<iostream>#include<string.h>using namespace std;class Bank{private:int num;char *name;float money;public:Bank(int i,char* na ,float j){num=i;name=new char[20]; //开辟name的空间,而不是形参na的空间//name=na; //不能直接复制,要用strcpy函数。strcpy(name,na);money=j;}void InMoney(float n){money+=n;cout<< 阅读全文
posted @ 2011-09-19 08:40 auleaf 阅读(112) 评论(0) 推荐(0) 编辑
摘要: #include<stdio.h>#include<stdlib.h>int main(){int **p; //定义一个二级指针int n=3,m=4; //4行3列p=(int **)malloc(4*sizeof(int *)); //分配一块空间,大小是4*sizeof(int *),保存四个指针,每个指针指向每一行的位置int i=0;for(i=0;i<m;i++){*(p+i)=(int *)malloc(3*sizeof(int)); //分配4次空间,每次分配3*sizeof(int)大小,里面保存3个值}int j;for(i=0;i<4 阅读全文
posted @ 2011-09-19 08:40 auleaf 阅读(524) 评论(0) 推荐(0) 编辑