摘要:
1 进程是系统中程序执行和资源分配的基本单位。每个进程有自己的数据段,代码段和堆栈段。 线程通常叫做轻型的进程。线程是在共享内存空间中并发执行的多道执行路径, 它们共享一个进程的资源。 2 同一个进程中的线程的共性:多个线程将共享同一个进程虚拟空间。 线程共享的环境包括:进程代码段,进程的公有数据(利用这些共享的数据,线程很容易实现相互之间的通讯),进程打开的文件描述符,信号的处理器,进程的当前目录和进程用户ID与进程组ID。 3 线程的个性: 线程ID:每个线程都有自己的线程ID,这个ID在本进程中是唯一的。 寄存器组的值:一个线程切换到另一个线程上时,必须将原有的线程的寄存器集合的状态保存 阅读全文
摘要:
01#include<stdio.h> 02int main() 03{ 04int a[5][5]={1,3,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25}; 05int (*p)[5]; //p是一个数组指针,它指向一个数组,这个数组里面有5个元素。 06p=a; // p是指向a[0][5]这个小数组的首地址,不是指向a[0][0]这个元素的首地址,所以p+1表示a[1][5]这个小数组的首地址 07printf("%d\n",**(p+1)); // 6 08printf(&q 阅读全文
摘要:
1 简单地说,shell就是命令解析器,将用户输入的指令转换为相应的机器能够运行的程序。 2 Shell是Linux系统中的一个重要的层次,它是用户与系统交互作用的界面。 Shell除了作为命令解释程序以外,还是一种高级程序设计语言。利用Shell程序设计语言可以编写出功能很强、但代码简单的程序。 3 shell脚本是一个包含一系列命令序列的文本文件。当运行这个脚本文件时,文件中包含的命令序列将得到执行。 4 Shell过程的建立和执行 称作Shell文件或者Shell脚本(Shell script)。 建立Shell过程的步骤同建立普通文本文件相同,利用编辑器(如vi或gedit)进行程序. 阅读全文
摘要:
; 数据块拷贝; AREA cpData, DATA, READWRITE align 4 ;四字节对齐buf1 space 12345 align 4 ;四字节对齐buf2 space 12345 AREA cpCode, CODE, READONLY ENTRYstart ;初始化测试数据 ldr r0, =12345-1 ldr r1, =buf1initloop strb r0, [r1, r0] subs r0, r0, #1 bne initloop ;数据拷贝 ldr r0, =12345 ;计数器 ldr r1, =buf1 ;源缓冲区 ldr r2, =buf2 ;目的缓冲区 阅读全文
摘要:
这种指令用于把单一的数 传入或者传出一个寄存器。支持的数据类型有字(32 位 ) 、半字(16 位) 和字节。常用的单寄存器加载与存储指令包括: LDR/STR 字数据加载/ 存储指令 LDRB/STRB 字节数据加载/ 存储指令 LDRH/STRH 半字数据加载/ 存储指令 LDRSB/LDRSH 有符号数字节/ 半字加载指令 ( 注意:没有strsb/strsh 指令) 1. 汇编格式 : LDR{<cond>}{T} Rd ,addr 功能: LDR 指令用于从存储器中将一个 32 位的字数据加载到目的寄存器 Rd 中。该指令通常用于从存储器中读取32 位的字数据到通用寄存器 阅读全文
摘要:
01; 02; 1-2+3-4+5...+99-100 03; 0405AREA sum2Code, CODE, READONLY 06ENTRY 07start 0809mov r0, #0 ;保存结果 10mov r1, #1 ;循环计数器 11sum2loop ;特点奇数加偶数减 12tst r1, #1 ;测试奇偶性 13addne r0, r0, r1 ;加奇数 14subeq r0, r0, r1 ;减偶数 15add r1, r1, #1 16cmp r1, #101 17bmi sum2loop 181920stop 21mov r0, #0x18 22ldr r1, =0.. 阅读全文
摘要:
ARM 处理器是加载/ 存储体系结构的处理器,对存储器的访问只能通过加载和存储指令实现。 1. 数据加载与存储的方向问题 数据加载与存储( Load-store )指令用于在存储器和处理器的寄存器之间传送数据。 数据加载与存储指令共有三种类型:单寄存器加载与存储指令、多寄存器加载与存储指令和交换指令。 2. 数据加载与存储指令的寻址 数据加载与存储类指令的基本格式为 opcode{<cond>} Rd ,addr 。格式中opcode 为指令代码,如 LDR 表示将存储器中的数据加载到寄存器中。addr 为存储器的地址表达式,也称为第2操作数,可表示为 [Rn,offset... 阅读全文
摘要:
; 02; 求 19! 03; 0405AREA jcCode, CODE, READONLY 06ENTRY 07start 0809mov r0, #1 ;结果低32位 10mov r1, #0 ;结果高32 11mov r2, #19 ;循环计数器 1213jcloop 14umull r0, r3, r2, r0; [r3 r0] <- r0 * r2 15mla r1, r2, r1, r3; r1 <- r1 * r2 + r3 16subs r2, r2, #1 17bne jcloop 181920stop 21mov r0, #0x18 22ldr r1, =0x 阅读全文
摘要:
01; 02; 代码演示 03; 04;定义数据段 05AREA p1Data, DATA, READWRITE 06buf1 dcd 1,2,3,4,5,6 ;定义字 07buf2 dcw 1,2,3,4,5,6 ;定义半字 08buf3 dcb 1,2,3,4,5,6 ;定义字节 09str dcb "123456", 0 ;定义字符串 10align 4 11buf4 space 256 ;分配256字节空间 12131415AREA p1Code, CODE, READONLY 1617ENTRY 18start 19;buf1 copy to buf4 20ldr 阅读全文
摘要:
int a[10];a[10]={1,2,4,5,1,5,1,2,3,4} //出错,因为此时a[10]代表一个元素,而且是已经越界的元素。int a[10]; 数组a里全是随机值int a[10]={}; 数组a里全是0int a[10]={1,5,2,1,13}; 后面5个全是0只要定义数组时有=,就会初始化。 阅读全文