Slide_Master

Size: px
Start display at page:

Download "Slide_Master"

Transcription

1 ARM 编程技巧 T H E A R C H I T E C T U R E F O R T H E D I G I T A L 1 W O R L D

2 Agenda ARM 编译器优化 C/C++ 和汇编混合模式编程使用 ARM 编译器编码局部和全局数据讨论 2 2

3 优化级别 使用的编译器优化级别是可选择的 -O0---DEBUG 关闭大多数优化. 最好的调试信息, 最少的优化 -O1---DEBUGREL 多数优化选项许可 给一个满意的调试, 好的代码密度 -O2---RELEASE (default) 完全的优化 有限的调试信息, 最好的代码密度 为代码大小或运行速度的优化, 可选择 : -Ospace ( 默认的 ) 或 -Otime. 使用 -g 选像可包含源码级调试信息 3 3

4 自动优化 ADS 编译器在所有级别中执行一些简单的优化 i.e. -O0, -O1, -O2 下面是一个例子 : 即使用 -O0, 多余的表达式也被清除了 : ATPCS 标准中子程序结果返回规则 结果为 32 位整数,R0 返回 结果为 64 位整数,R0,R1 返回 位数更多时, 用内存来传递 int f(int *p) return (*p = = *p); armcc -c -O0 f MOV r1, r0 MOV r0, #1 MOV pc, lr 注意 : 在这种情况下, 可使用 C 的关键字 volatile 强制使用这些变量 4 4

5 使用 volatile int f(int *p) return (*p = = *p); armcc -c f MOV r0,#1 MOV pc,lr int f(volatile int *p) return (*p = = *p); armcc -c f LDR r1,[r0] LDR r0,[r0] CMP r1,r0 MOVNE r0,#0 MOVEQ r0,#1 MOV pc,lr 这个代码用的编译级别是 :-o2 5 5

6 冗余代码的清除 下面是一个冗余代码清除的例子, 他只用了 -o1 的优化选项 : int dummy() int a=10, b=20; int c; c=a+b; return 0; armcc -c -O1 dummy MOV r0, #0 MOV pc, lr 6 6

7 指令编排 指令编排在高级优化选项中是有效的 (-O1, -O2). 指令的重新编排是为了使要运行的代码更适合对应的核 为 arm9 和以后的处理器提高吞吐量 ( 一般可达到 4%), 并防止互锁 (interlock) 选择处理器可决定使用的运算法则, 在默认情况下, 使用针对 ARM9 的优化方案 ( 对 ARM7 的运行没有影响 ) 例如 : int f(int *p, int x) return *p + x * 3; 没用指令编排 (-O0) 使用指令编排 (-O1,-O2) ADD r1,r1,r1,lsl #1 LDR r0,[r0,#0] LDR r0,[r0,#0] ADD r1,r1,r1,lsl #1 ADD r0,r0,r1 ; interlock on ARM9 ADD r0,r0,r1 MOV pc,lr MOV pc,lr armcc cpu arm7tdmi armcc cpu arm9tdmi 7 7

8 Tail-call Optimization 嵌套优化 嵌套优化可避免在函数级里的不必要的返回在可能的情况下 BL 译码成 B 在高级优化里有效 (-O1, -O2). int main() int x = f(); : int f() int y = g(); return y; int g() return 10; BL f : BL f : STR lr,[sp,#-4]! BL g MOV r1,r0 MOV r0,r1 LDR pc,[sp],#4 B g MOV r0, #10 MOV pc, lr MOV r0, #10 MOV pc, lr 8 8

9 内嵌函数 (inline) 内嵌可通过删除子函数调用的开销来提高性能 这个 inline 关键字显示哪个函数将被内嵌 在高级优化选项中,ADS 1.2 编译器默认自动内嵌 -Oautoinline (default -O2) -Ono_autoline (default for -O0,-O1) 哪个函数是否被内嵌取决于 : 他们是否被 inline 标示 优化的级别 -Otime / -Ospace 函数被调用的次数 如果函数在别的模块中不被调用, 一个好的建议是用 static 标识函数, 否则, 编译器将在内嵌译码里把该函数编译乘非内嵌的 加代码的长度 使调试信息更复杂 Example

10 Inline 内嵌例子 example int bar(int a) a=a+5; return a; int foo(int i) i=bar(i); i=i-2; i=bar(i); i++; return i; bar foo ADD r0,r0,#5 MOV pc,lr STR lr,[sp,#-4]! BL bar SUB r0,r0,#2 BL bar ADD r0,r0,#1 LDR pc,[sp],#4 inline int bar(int a) a=a+5; return a; int foo(int i) i=bar(i); i=i-2; i=bar(i); i++; return i; foo ADD r0,r0,#5 SUB r0,r0,#2 ADD r0,r0,#5 ADD r0,r0,#1 MOV pc,lr 10 10

11 Agenda ARM 编译器的优化 C/C++ 和汇编混合模式编程使用 ARM 编译器编码局部和全局数据讨论 11 11

12 C/C++ 和汇编能很容易的混合 : 可实现在 c 中无法实现的处理器功能 使用新的或不支持的指令 产生更高效的代码 C 和汇编的混合编程 直接链接变量和程序 确定符合程序调用规范 输入 / 输出相关的符号 编译器也可包含内嵌汇编 大多数 arm 指令集都可实现 寄存器操作数可支持任意的 c/c++ 的表达式 内嵌汇编代码可由编译器的优化器来传递 12 12

13 ATPCS(arm/thumb 程序调用规范 ) 作为函数传递的参数值 寄存器变量必须保护 Register r0 r1 r2 r3 r4 r5 r6 r7 r8 r9/sb r10/sl r11 编译器使用一套规则的来设置寄存器的用法 ARM-Thumb Procedure Call Standard or ATPCS (or APCS) CPSR 标志位可被函数调用所破坏任何和编译过的代码交互工作的汇编码在接口层必须满足 ATPCS 的规范 - 如果 RWPI 选项有效, 作为栈的基地址 - 如果软件堆栈检查有效, 作为栈的限制值 Scratch register (corruptible) Stack Pointer Link Register Program Counter r12 r13/sp r14/lr r15/pc - 子程序内部调用的可改写的寄存器 - 可作为临时的一个值栈一样来使用 - 程序计数器 13 13

14 在 C 程序中调用汇编 在汇编程序中用 export name 来定义 在 C 程序中直接调用, 用 EXTERN 声明 正常链接 extern void mystrcopy(char *d, const char *s); int main(void) const char *src = Source ; char dest[10];... mystrcopy(dest, src);... CALL AREA StringCopy, CODE, READONLY EXPORT mystrcopy mystrcopy LDRB r2, [r1], #1 STRB r2, [r0], #1 CMP r2, #0 BNE mystrcopy MOV pc, lr END 这里所有的参数都是可以用寄存器来传递的, 所以不需要在汇编程序中使用 PUSH/POP 来保护 14 14

15 内嵌汇编 #define Q_Flag 0x // Bit 27 允许使用一些不能由编译器自动生成的指令 : MSR / MRS 新的指令 协处理器指令 通常在关联的内嵌函数中使用 使用 C 变量代替寄存器 不是一个真正的汇编文件 通过优化器实现 ADS FAQ 入口 Using the Inline Assembler inline void Clear_Q_flag (void) int temp; asm MRS temp, CPSR BIC temp, temp, #Q_Flag MSR CPSR_f, temp inline int mult16(short a, short b, int c) int temp; asm SMLABB temp,a,b,c return temp; 15 15

16 Agenda ARM 编译器的优化 C/C++ 和汇编混合模式编程 使用 ARM 编译器编码局部和全局数据讨论 16 16

17 参数传递 开始四个字大小的参数直接使用寄存器的 R0-R3 来传递 ( 快速且高效的 ) 更多的信息可参看 ATPCS 如果需要更多的参数, 将使用堆栈 ( 需要额外的指令和慢速的存储器操作 ) 所以通常限制参数的个数, 使它为 4 或更少 如果不可避免, 把常用的参数前 4 个放在 R0-R3 中 Example

18 Parameter Passing (4 parameters) Parameter Passing (4 parameters) int func1(int a, int b, int c, int d) return a+b+c+d; int caller1(void) return func1(1,2,3,4); func1 0x : ADD r0,r0,r1 0x : ADD r0,r0,r2 0x : ADD r0,r0,r3 0x00000c : MOV pc,lr caller1 0x : MOV r3,#4 0x : MOV r2,#3 0x00001c : MOV r1,#2 0x : MOV r0,#1 0x : B func

19 Parameter Passing (6 parameters) Parameter Passing (6 parameters) int func2(int a,int b,intc, int,d,int e,int f) return a+b+c+d+e+f; int caller2(void) return func1(1,2,3,4,5,6); This code is compiled with -O2 -Ono_autoinline func2 0x : STR lr, [sp,#-4]! 0x : ADD r0,r0,r1 0x : ADD r0,r0,r2 0x00000C : ADD r0,r0,r3 0x : LDMIB sp,r12,r14 0x : ADD r0,r0,r12 0x : ADD r0,r0,r14 0x00001C : LDR pc,sp,#4 caller2 0x : SFD sp!,r2,r3,lr 0x : MOV r3,#6 0x : MOV r2,#5 0x00002C : SIA sp,r2,r3 0x : MOV r3,#4 0x : MOV r2,#3 0x : MOV r1,#2 0x00003C : MOV r0,#1 0x : BL func2 0x : LDMFD sp!,r2,r3,pc 19 19

20 循环终止 在 for(), while() do while() 的循环中, 用减到 0 代替加到某个值 比如, 用下面的代替 : for (loop = 1; loop <= total; loop++) //(ADD,CMP) 代替为 : for (loop = total; loop!= 0; loop--) //(SUBS) 尽量减少循环的次数 代码小, 且使用更少的寄存器 Example

21 Loop Termination Count up int fact1(int limit) int i; int fact = 1; Count down int fact2(int limit) int i; int fact = 1; for (i = 1; i <= limit; i++) fact = fact * i; return fact; for (i = limit; i!= 0; i--) fact = fact * i; return fact; fact1 0x : MOV r2,#1 0x : MOV r1,#1 0x : CMP r0,#1 0x00000c : BLT 0x20 0x : MUL r2,r1,r2 0x : ADD r1,r1,#1 0x : CMP r1,r0 0x00001c : BLE 0x10 0x : MOV r0,r2 0x : MOV pc,lr fact2 0x : MOVS r1,r0 0x : MOV r0,#1 0x : MOVEQ pc,lr 0x00000c : MUL r0,r1,r0 0x : SUBS r1,r1,#1 0x : BNE 0x0c 0x : MOV pc,lr This code is compiled with -O2 -Otime 21 21

22 除法操作 (1) ARM 核不含除法硬件 除法通常用一个运行库函数来实现 运行需要很多的周期 unsigned div(unsigned a, unsigned b) return (b / a); div B rt_udiv 一些除法操作在编译时作为特例来处理 除 2 操作, 被左移代替 unsigned div2(unsigned b) return (b / 2); div2 MOV r0,r0,lsr #1 MOV pc,lr 22 22

23 除法操作 (2) 在 -O1 和 -O2 ( 使用 -Otime), 其他的常量将使用一个标准的乘法序列来完成例如 : unsigned div10(unsigned c) return (c / 10); div10 MOV r1,r0 LDR r0,=0xcccccccd UMULL r2,r1,r0,r1 MOV r0,r1,lsr #3 MOV pc,lr 实时除法程序 使用 CLZ 指令 只有 V5te 体系结构才有效 用下面的办法来选择 C - #pragma import use_realtime_division Assembler - IMPORT use_realtime_division 23 23

24 余数 模算法 余数的操作符 %, 通常使用模算法 如果这个值的模不是 2 的 n 次幂, 它将花费大量的时间和代码空间 避免这种情况发生的办法使用 if() 作状态检查 比如说 :count 的范围是 0 到 59 count = (count+1) % 60; 用下面的句子代替 if (++count >= 60) count = 0; modulo ADD r1,r0,#1 MOV r0,#0x3c BL rt_udiv MOV r0,r1 test_and_reset ADD r0,r0,#1 CMP r0,#0x3c MOVCS r0,#0 这个代码用 -O1 -Ospace 编译 24 24

25 浮点 软件浮点库 (fplib) 默认 :-fpu softvfp (or softfpa) 浮点协处理器 VFP (ARM10 and ARM9) -fpu vfp (or vfpv1 or vfpv2) FPA (eg ARM7 500fe) - now obsolete -fpu fpa 软件浮点仿真 (FPE) 通过未定义的异常来捕获协处理器指令 VFP (and FPA) 实际上是硬件协处理器和仿真的混合 要求支持代码去实现混合运算 在 AFS 1.3 和以后的版本里有 VFP 的支持代码, 在 ADS 的 FPA 里. 在 thumb 代码使用 fp 处, vfp 系统用 -fpu softvfp+vfp 编译 使用 -auto_float_constants 预防常量被处理为双精度类型, 关闭警告用 -Wk. Example

26 Floating point examples float foo(float num1, float num2) float temp, temp2; armcc float.c temp = num1 + num2; temp2 = num2 * num2; return temp2-temp; armcc -fpu vfpv2 float.c foo SFD sp!,r3-r5,lr MOV r4,r1 BL _fadd MOV r5,r0 MOV r0,r4 MOV r1,r4 BL _fmul MOV r1,r5 LDMFD sp!,r3-r5,lr B _fsub foo FADDS s0,s0,s1 FMULS s1,s1,s1 FSUBS s0,s1,s0 MOV pc,lr 使用协处理器指令 使用浮点库 26 26

27 Agenda ARM 编译器优化 C/C++ 和汇编混合模式编程使用 ARM 编译器编码局部和全局数据 27 27

28 变量类型 全局和静态变量保留在 RAM 里 需使用 loads/stores 访问外部存储器 局部变量通常放在寄存器中, 用来快速且高效的处理 如果编译器的寄存器分配算法认为超过现有的寄存器数量, 将把变量压入栈中 对局部变量, 用 word-sized (int) 代替 halfword 和 byte: 为了确保不受其他条件的影响, 可特别指定使用 32-bit 寄存器变量

29 变量大小 int wordsize(int a) wordsize 0x : MOV r0,r0,lsl #1 return (a*2); 0x : MOV pc,lr short halfsize(short b) halfsize 0x : MOV r0,r0,lsl #17 return (b*2); 0x00000c : MOV r0,r0,asr #16 0x : MOV pc,lr char bytesize(char c) bytesize 0x : MOV r0,r0,lsl #25 return (c*2); 0x : MOV r0,r0,lsr #24 0x00001c : MOV pc,lr 29 29

30 堆栈的用法 C/C++ 代码的堆栈使用, 堆栈用来保留 : 子程序的返回地址 溢出 的局部变量 局部数组和结构体 注意 : 函数越小越好 : ( 更少的变量, 更少的 溢出 ); 更少数量的 live 变量 ( 比如 : 函数里每个点保存的有用的数据 ) 避免使用大的局部结构体或数组 ( 使用 malloc/free 代替 ) 避免递归 30 30

31 堆栈使用估计 链接使用 -callgraph 显示静态堆栈的开销 (html 文件 ). 编译时使用软件堆栈检查 -apcs /swst 在栈结束点设置 watchpoint 测试堆栈 定义大的栈 填充某个值, 看覆盖了多少, 从而判定栈的使用情况 ARMulator 映射文件 拒绝访问栈下面的区域, 栈溢出将导致一个 data abort 异常 stackuse.c ARMulator 模式, 跟踪堆栈的大小, 用 ARMulator 的统计来输出报告 当要对堆栈使用情况进行估计时, 使用 worst case 31 31

32 全局数据布局 全局数据保存在存储器里, 不是寄存器 需要 load / store 指令来访问 用物理尺寸的边界对齐 ADS 1.2 会优化在一个模块里的全局数据的布局 用 -Ono_data_reorder 将关闭排序 e.g. 声明的数据 char one; short two; char three; int four; char char int short Declared alignment 12 bytes (4 bytes of padding) ADS 1.1+ 将自动用此风格排序 char char int short Optimal alignment 8 bytes (Zero bytes of padding) 32 32

33 不对齐访问 ARM 硬件需要在自然尺寸的边界访问内存 Word 访问在 word 尺寸 Halfword 访问在 halfword 尺寸 Byte 访问在 byte 尺寸 不对齐访问 遗留代码 特定协议 需要必须告诉编译器, 让它产生适当的指令序列 使用 packed 属性 可能导致多字节访问代替单字节访问 用 LDM 指令的结果有 2 字, 转变为生成单字 不对齐数据的访问所产生的意外的结果取决于指令的使用 将是不可预知的 33 33

34 指针的对齐 必须非常小心指针的对齐 可能导致程序的失败 #include <string.h> int *a = (int *)0x1000; int *b = (int *)0x2000; char *c = (char *)0x3001; packed int *d; void foo (void) memcpy (b,a,12); memcpy (c,a,12); b = (int *)c; memcpy (b,a,12); d = ( packed int *)c; memcpy ((void *)d,a,12); SFD r13!,r4,r14 LDR r4,0x58 LDR r1,[r4,#0] LDR r0,[r4,#4] LDMIA r1,r2,r3,r12 SIA r0,r2,r3,r12 LDR r0,[r4,#8] LDR r1,[r4,#0] MOV r2,#0xc BL rt_memcpy LDR r0,[r4,#8] STR r0,[r4,#4] LDR r1,[r4,#0] LDMIA r1,r2,r3,r12 SIA r0,r2,r3,r12 LDR r0,[r4,#8] LDR r1,0x5c MOV r2,#0xc STR r0,[r1,#0] LDR r1,[r4,#0] BL rt_memcpy LDMFD r13!,r4,pc memcpy inline d memcpy called memcpy inline d unsafely memcpy called safely 34 34

35 结构的打包 _packed 限定的数据为 1 字节对齐 不实现字节对齐调整 很高的访问代价, 不会节省存储空间 short U_int int U_int packed struct mystruct int aligned_i; short aligned_s; int unaligned_i; ; extern struct mystruct S; PREFER... struct mystruct int aligned_i; short aligned_s; packed int unaligned_i; ; extern struct mystruct S; 在结构里定义打包的元素代替结构的打包 他将帮助减小访问输出的结构的开销 ADS FAQ 入口 : Aligned v. unaligned accesses and use of packed 35 35

36 优化的指针基地址 extern int a; extern int b; void foo (int x, int y) a = x; b = y; a 和 b 被定义为外部的 LDR r2, [pc,#12] STR r0, [r2,#0] LDR r3, [pc,#8] STR r1, [r3,#0] MOV pc, lr DCD address of a DCD address of b b a int a; int b; void foo (int x, int y) a = x; b = y; a 和 b 被定义为模块内用的数据 LDR r2, [pc,#8] STR r0, [r2,#0] STR r1, [r2,#4] MOV pc, lr DCD base address of a and b 注意 : 在用 -o0 时无效 36 36

37 优化外部全局指针 如果全局数据放在结构体里, 每个元素的访问将自动的在基指针上偏移 在结构体里的元素将按大小的边界对齐 编译器不对结构体重新排列 把数据放在多个逻辑结构体内, 代替一个大的结构 #define 将对主应用代码的改变隐藏起来 #define value mystruct.value Example

38 外部全局变量 data.c code.c Assembler output int a; int b; extern int a; extern int b; int main(void) return a+b; main ac b b b bc c c4 LDR r0,0x000080c0 LDR r1,0x000080c4 LDR r0,[r0,#0] LDR r1,[r1,#0] ADD r0,r0,r1 MOV pc,lr DCD 0x000083d4 DCD 0x000083d8 struct data int a; int b; mystruct; extern struct data mystruct; int main(void) return mystruct.a+mystruct.b; main ac b b b bc LDR r0,0x000080bc LDR r1,[r0,#0] LDR r0,[r0,#4] ADD r0,r1,r0 MOV pc,lr DCD 0x000083cc 38 38

39 测验 1) 默认的优化级别是什么? 2) 给 tail-call 优化有什么好处 3) 在函数调用时, 管理寄存器用法的标准的名字是什么? 4) 在参数传递时, 被推荐的最大的量是多少? 5) 为什么在 arm 里要尽可能避免使用除法? 6) packed 的效果是什么? 39 39

40 参考 需要更多的信息, 请看 : ADS 1.2 Compilers and Libraries Guide Section 2 : C and C++ Compilers Section 3 : ARM Compiler Reference ADS 1.2 Developer Guide Chapter 4: Mixing C, C++ and Assembly Language Application Note 34, Writing Efficient C Application Note 36, Declaring Global Data in C 40 40

41

CC213

CC213 : (Ken-Yi Lee), E-mail: feis.tw@gmail.com 49 [P.51] C/C++ [P.52] [P.53] [P.55] (int) [P.57] (float/double) [P.58] printf scanf [P.59] [P.61] ( / ) [P.62] (char) [P.65] : +-*/% [P.67] : = [P.68] : ,

More information

学习MSP430单片机推荐参考书

学习MSP430单片机推荐参考书 MSP430 16 MSP430 C MSP430 C MSP430 FLASH 16 1 CPU 16 ALU 16 PC SP SR R4~R15 2 3 00-FFH 100-1FFH 4 5 1 2 51 24 27 6 1 2 3 4 5 6 4 12 SR SP SR CPU SR CPU C Z N GIE CPUOff CPU OscOff SCG0 SCG1 CPU EXIT SP

More information

uc/os 1

uc/os 1 uc/os 1 uc/os-ii Source Code ANSI C, uc/os-ii 8/16/32 bits microprocessor Preemptive real-time Task 64 Stack Size ROMable (C compiler, assembler and linker/locator) uc/os-ii Mailboxes, Queues, Semaphores,

More information

chap07.key

chap07.key #include void two(); void three(); int main() printf("i'm in main.\n"); two(); return 0; void two() printf("i'm in two.\n"); three(); void three() printf("i'm in three.\n"); void, int 标识符逗号分隔,

More information

<4D F736F F D20CAB5D1E BACDBBE3B1E0D3EFD1D4B5C4BBECBACFB1E0B3CCCAB5D1E92E646F63>

<4D F736F F D20CAB5D1E BACDBBE3B1E0D3EFD1D4B5C4BBECBACFB1E0B3CCCAB5D1E92E646F63> 1 实验目的 实验 2 C 和汇编语言的混合编程实验 学习在 C 程序中使用嵌入式汇编编写程序 了解嵌入式汇编的格式 语言特点 2 实验设备 S3C2410 开发板 ADS1.2 集成开发环境,JTAG 调试器 串口连接线 3 实验原理 在 ARM 的应用开发中,C 语言功能强大且容易编写程序, 但是汇编程序在底层的操作仍然具有 C 程序无法替代的功能, 有时候我们需要在 C 程序中嵌入汇编程序来完成一些直接对底层的诸如寄存器的操作

More information

FY.DOC

FY.DOC 高 职 高 专 21 世 纪 规 划 教 材 C++ 程 序 设 计 邓 振 杰 主 编 贾 振 华 孟 庆 敏 副 主 编 人 民 邮 电 出 版 社 内 容 提 要 本 书 系 统 地 介 绍 C++ 语 言 的 基 本 概 念 基 本 语 法 和 编 程 方 法, 深 入 浅 出 地 讲 述 C++ 语 言 面 向 对 象 的 重 要 特 征 : 类 和 对 象 抽 象 封 装 继 承 等 主

More information

51 C 51 isp 10 C PCB C C C C KEIL

51 C 51 isp 10   C   PCB C C C C KEIL http://wwwispdowncom 51 C " + + " 51 AT89S51 In-System-Programming ISP 10 io 244 CPLD ATMEL PIC CPLD/FPGA ARM9 ISP http://wwwispdowncom/showoneproductasp?productid=15 51 C C C C C ispdown http://wwwispdowncom

More information

untitled

untitled A, 3+A printf( ABCDEF ) 3+ printf( ABCDEF ) 2.1 C++ main main main) * ( ) ( ) [ ].* ->* ()[] [][] ** *& char (f)(int); ( ) (f) (f) f (int) f int char f char f(int) (f) char (*f)(int); (*f) (int) (

More information

C语言的应用.PDF

C语言的应用.PDF AVR C 9 1 AVR C IAR C, *.HEX, C,,! C, > 9.1 AVR C MCU,, AVR?! IAR AVR / IAR 32 ALU 1KBytes - 8MBytes (SPM ) 16 MBytes C C *var1, *var2; *var1++ = *--var2; AVR C 9 2 LD R16,-X ST Z+,R16 Auto (local

More information

Microsoft Word - 把时间当作朋友(2011第3版)3.0.b.06.doc

Microsoft Word - 把时间当作朋友(2011第3版)3.0.b.06.doc 2 5 8 11 0 13 1. 13 2. 15 3. 18 1 23 1. 23 2. 26 3. 28 2 36 1. 36 2. 39 3. 42 4. 44 5. 49 6. 51 3 57 1. 57 2. 60 3. 64 4. 66 5. 70 6. 75 7. 83 8. 85 9. 88 10. 98 11. 103 12. 108 13. 112 4 115 1. 115 2.

More information

C PICC C++ C++ C C #include<pic.h> C static volatile unsigned char 0x01; static volatile unsigned char 0x02; static volatile unsigned cha

C PICC C++ C++ C C #include<pic.h> C static volatile unsigned char 0x01; static volatile unsigned char 0x02; static volatile unsigned cha CYPOK CYPOK 1 UltraEdit Project-->Install Language Tool: Language Suite----->hi-tech picc Tool Name ---->PICC Compiler Executable ---->c:hi-picinpicc.exe ( Command-line Project-->New Project-->File Name--->myc

More information

untitled

untitled 8086/8088 CIP /. 2004.8 ISBN 7-03-014239-X.... TP313 CIP 2004 086019 16 100717 http://www.sciencep.com * 2004 8 2004 8 1 5 500 787 1092 1/16 16 1/2 391 000 1 2 ii 1 2 CAI CAI 3 To the teacher To the student

More information

c_cpp

c_cpp C C++ C C++ C++ (object oriented) C C++.cpp C C++ C C++ : for (int i=0;i

More information

untitled

untitled 不 料 料 例 : ( 料 ) 串 度 8 年 數 串 度 4 串 度 數 數 9- ( ) 利 數 struct { ; ; 數 struct 數 ; 9-2 數 利 數 C struct 數 ; C++ 數 ; struct 省略 9-3 例 ( 料 例 ) struct people{ char name[]; int age; char address[4]; char phone[]; int

More information

C++ 程式設計

C++ 程式設計 C C 料, 數, - 列 串 理 列 main 數串列 什 pointer) 數, 數, 數 數 省 不 不, 數 (1) 數, 不 數 * 料 * 數 int *int_ptr; char *ch_ptr; float *float_ptr; double *double_ptr; 數 (2) int i=3; int *ptr; ptr=&i; 1000 1012 ptr 數, 數 1004

More information

Microsoft Word - 把时间当作朋友(2011第3版)3.0.b.07.doc

Microsoft Word - 把时间当作朋友(2011第3版)3.0.b.07.doc 2 5 8 11 0 1. 13 2. 15 3. 18 1 1. 22 2. 25 3. 27 2 1. 35 2. 38 3. 41 4. 43 5. 48 6. 50 3 1. 56 2. 59 3. 63 4. 65 5. 69 13 22 35 56 6. 74 7. 82 8. 84 9. 87 10. 97 11. 102 12. 107 13. 111 4 114 1. 114 2.

More information

zt

zt ! " " " " " " " " " " !" %$$#! " "& ((! "!"#!"!" #!#$ "#$!$ "$!"##!"$!!"#!"!" % #$%" % # "% &!!!& ()*+,,-!& ()*+,,-*! "!,-!,-* "!)&*+,,-!)&*+,,-* "&(!$%!"! &!& ()&0,;!/) (&-:A 2-1,;!/) +2(192>*.) /0-1

More information

6 C51 ANSI C Turbo C C51 Turbo C C51 C51 C51 C51 C51 C51 C51 C51 C C C51 C51 ANSI C MCS-51 C51 ANSI C C C51 bit Byte bit sbit

6 C51 ANSI C Turbo C C51 Turbo C C51 C51 C51 C51 C51 C51 C51 C51 C C C51 C51 ANSI C MCS-51 C51 ANSI C C C51 bit Byte bit sbit 6 C51 ANSI C Turbo C C51 Turbo C C51 C51 C51 C51 C51 C51 C51 C51 C51 6.1 C51 6.1.1 C51 C51 ANSI C MCS-51 C51 ANSI C C51 6.1 6.1 C51 bit Byte bit sbit 1 0 1 unsigned char 8 1 0 255 Signed char 8 11 128

More information

int *p int a 0x00C7 0x00C7 0x00C int I[2], *pi = &I[0]; pi++; char C[2], *pc = &C[0]; pc++; float F[2], *pf = &F[0]; pf++;

int *p int a 0x00C7 0x00C7 0x00C int I[2], *pi = &I[0]; pi++; char C[2], *pc = &C[0]; pc++; float F[2], *pf = &F[0]; pf++; Memory & Pointer trio@seu.edu.cn 2.1 2.1.1 1 int *p int a 0x00C7 0x00C7 0x00C7 2.1.2 2 int I[2], *pi = &I[0]; pi++; char C[2], *pc = &C[0]; pc++; float F[2], *pf = &F[0]; pf++; 2.1.3 1. 2. 3. 3 int A,

More information

C/C++程序设计 - 字符串与格式化输入/输出

C/C++程序设计 - 字符串与格式化输入/输出 C/C++ / Table of contents 1. 2. 3. 4. 1 i # include # include // density of human body : 1. 04 e3 kg / m ^3 # define DENSITY 1. 04 e3 int main ( void ) { float weight, volume ; int

More information

C/C++ - 文件IO

C/C++ - 文件IO C/C++ IO Table of contents 1. 2. 3. 4. 1 C ASCII ASCII ASCII 2 10000 00100111 00010000 31H, 30H, 30H, 30H, 30H 1, 0, 0, 0, 0 ASCII 3 4 5 UNIX ANSI C 5 FILE FILE 6 stdio.h typedef struct { int level ;

More information

untitled

untitled 1 7 7.1 7.2 7.3 7.4 7.5 2 7.1 VFT virtual 7.1 3 1 1. 2. public protected public 3. VFT 4. this const volatile 4 2 5. ( ) ( ) 7.1 6. no-static virtual 7.2 7. inline 7.3 5 3 8. this this 9. ( ) ( ) delete

More information

Ps22Pdf

Ps22Pdf A B C D A B C D A B C D a a b c x x x x x x x x x x x x x x x x x a b c x a x x x x x x x x x x a b a b a b x x x x x x x x x x x x A B C A B C A B A B A x B C x D A B C a b c a b x x x x x x x A B A

More information

<4D F736F F D20B5DAC8FDCBC4D5C2D7F7D2B5B4F0B0B82E646F63>

<4D F736F F D20B5DAC8FDCBC4D5C2D7F7D2B5B4F0B0B82E646F63> 第三章 Q3 1 1. 省略了 I/O 操作的复杂逻辑, 易实现, 耗费低 ; 2. 可以利用丰富的内存寻址模式实现灵活的 I/O 操作 Q3 2 假设存储单元 ds1 处寄存器地址为 0x2000, 代码如下 #define ds1 0x2000 while ( *ds1 == 0 ) ; Q3 3 假设设备 (dev1) 中有两个寄存器 ds1 和 dd1,dev1 的地址为 0x1000,ds1

More information

帝国CMS下在PHP文件中调用数据库类执行SQL语句实例

帝国CMS下在PHP文件中调用数据库类执行SQL语句实例 帝国 CMS 下在 PHP 文件中调用数据库类执行 SQL 语句实例 这篇文章主要介绍了帝国 CMS 下在 PHP 文件中调用数据库类执行 SQL 语句实例, 本文还详细介绍了帝国 CMS 数据库类中的一些常用方法, 需要的朋友可以参考下 例 1: 连接 MYSQL 数据库例子 (a.php)

More information

Microsoft PowerPoint - university training.ppt

Microsoft PowerPoint - university training.ppt ARM 体系结构及基于 ARM 的嵌入式开发 费浙平 zfei@arm.com ARM 中国 议程 ARM 简介 ARM 在嵌入式产品中的应用 ARM 的体系结构 嵌入式系统开发 嵌入式系统调试 ADS 使用介绍 Q & A 2 知识产权公司 SOC 片上系统 always @(/*AUTOSENSE*/CoreWrCommsData) begin if (!DBGENintD) CoreWrFlgNS

More information

C/C++语言 - C/C++数据

C/C++语言 - C/C++数据 C/C++ C/C++ Table of contents 1. 2. 3. 4. char 5. 1 C = 5 (F 32). 9 F C 2 1 // fal2cel. c: Convert Fah temperature to Cel temperature 2 # include < stdio.h> 3 int main ( void ) 4 { 5 float fah, cel ;

More information

新版 明解C++入門編

新版 明解C++入門編 511!... 43, 85!=... 42 "... 118 " "... 337 " "... 8, 290 #... 71 #... 413 #define... 128, 236, 413 #endif... 412 #ifndef... 412 #if... 412 #include... 6, 337 #undef... 413 %... 23, 27 %=... 97 &... 243,

More information

C 1

C 1 C homepage: xpzhangme 2018 5 30 C 1 C min(x, y) double C // min c # include # include double min ( double x, double y); int main ( int argc, char * argv []) { double x, y; if( argc!=

More information

untitled

untitled 1 Outline 數 料 數 數 列 亂數 練 數 數 數 來 數 數 來 數 料 利 料 來 數 A-Z a-z _ () 不 數 0-9 數 不 數 SCHOOL School school 數 讀 school_name schoolname 易 不 C# my name 7_eleven B&Q new C# (1) public protected private params override

More information

( CIP) /. :, ( ) ISBN TP CIP ( 2005) : : : : * : : 174 ( A ) : : ( 023) : ( 023)

( CIP) /. :, ( ) ISBN TP CIP ( 2005) : : : : * : : 174 ( A ) : : ( 023) : ( 023) ( CIP) /. :, 2005. 2 ( ) ISBN 7-5624-3339-9.......... TP311. 1 CIP ( 2005) 011794 : : : : * : : 174 ( A ) :400030 : ( 023) 65102378 65105781 : ( 023) 65103686 65105565 : http: / /www. cqup. com. cn : fxk@cqup.

More information

C++ 程序设计 告别 OJ1 - 参考答案 MASTER 2019 年 5 月 3 日 1

C++ 程序设计 告别 OJ1 - 参考答案 MASTER 2019 年 5 月 3 日 1 C++ 程序设计 告别 OJ1 - 参考答案 MASTER 2019 年 月 3 日 1 1 INPUTOUTPUT 1 InputOutput 题目描述 用 cin 输入你的姓名 ( 没有空格 ) 和年龄 ( 整数 ), 并用 cout 输出 输入输出符合以下范例 输入 master 999 输出 I am master, 999 years old. 注意 "," 后面有一个空格,"." 结束,

More information

1 Project New Project 1 2 Windows 1 3 N C test Windows uv2 KEIL uvision2 1 2 New Project Ateml AT89C AT89C51 3 KEIL Demo C C File

1 Project New Project 1 2 Windows 1 3 N C test Windows uv2 KEIL uvision2 1 2 New Project Ateml AT89C AT89C51 3 KEIL Demo C C File 51 C 51 51 C C C C C C * 2003-3-30 pnzwzw@163.com C C C C KEIL uvision2 MCS51 PLM C VC++ 51 KEIL51 KEIL51 KEIL51 KEIL 2K DEMO C KEIL KEIL51 P 1 1 1 1-1 - 1 Project New Project 1 2 Windows 1 3 N C test

More information

嵌入式系统设计与应用 Pengju XJTU 2017 第五章程序设计与分析 (2) 西安交通大学电信学院 任鹏举

嵌入式系统设计与应用 Pengju XJTU 2017 第五章程序设计与分析 (2) 西安交通大学电信学院 任鹏举 嵌入式系统设计与应用 第五章程序设计与分析 (2) 西安交通大学电信学院 任鹏举 目标代码设计 可重入 : 如果程序执行一个函数时被另一个执行该函数的调用中断而不改变函数结果, 则该函数是可重入的 int foo = 1; int task1() { foo = foo + 1; return foo;} } int task1(int foo){ return foo+1; 可重定位 : 若一个程序置于内存不同位置均可执行,

More information

Microsoft Word - MSP430 Launchpad 指导书.docx

Microsoft Word - MSP430 Launchpad 指导书.docx Contents 3... 9... 14 MSP430 LAUNCHPAD 指导书 3 第一部分第一个工程 New Project File > New > CCS Project Project name: ButtonLED Device>Family: MSP430 Variant: MSP430G2553 Project templates and examples : Empty Project

More information

untitled

untitled MODBUS 1 MODBUS...1 1...4 1.1...4 1.2...4 1.3...4 1.4... 2...5 2.1...5 2.2...5 3...6 3.1 OPENSERIAL...6 3.2 CLOSESERIAL...8 3.3 RDMULTIBIT...8 3.4 RDMULTIWORD...9 3.5 WRTONEBIT...11 3.6 WRTONEWORD...12

More information

Andes Technology PPT Temp

Andes Technology PPT Temp 晶心科技線上技術研討會 AndesCore 便捷的全 C 嵌入式编程 晶心科技市場及技術服務部毛礼杰軟件經理 WWW.ANDESTECH.COM 大纲 系统初始化介绍 异常和中断说明 全 C 语法例子说明 总结 2 CPU 相关特性 1: 中断向量表 系统初始化 (1) 2: 系统寄存器 通常需要用 assembly( 汇编 / 组合 ) 语言来操作 AndesCore 全 C 嵌入式编程 C 扩展语法

More information

概述

概述 OPC Version 1.6 build 0910 KOSRDK Knight OPC Server Rapid Development Toolkits Knight Workgroup, eehoo Technology 2002-9 OPC 1...4 2 API...5 2.1...5 2.2...5 2.2.1 KOS_Init...5 2.2.2 KOS_InitB...5 2.2.3

More information

42 2141601026 2016 11 27 2 1.1............................................. 2 1.2....................................... 2 1.2.1......................................... 2 1.3.............................................

More information

C C

C C C C 2017 3 8 1. 2. 3. 4. char 5. 2/101 C 1. 3/101 C C = 5 (F 32). 9 F C 4/101 C 1 // fal2cel.c: Convert Fah temperature to Cel temperature 2 #include 3 int main(void) 4 { 5 float fah, cel; 6 printf("please

More information

2/80 2

2/80 2 2/80 2 3/80 3 DSP2400 is a high performance Digital Signal Processor (DSP) designed and developed by author s laboratory. It is designed for multimedia and wireless application. To develop application

More information

ARM JTAG实时仿真器安装使用指南

ARM JTAG实时仿真器安装使用指南 ARM JTAG Version 1.31 2003. 11. 12 ARM JTAG ARM JTAG.3 ARM 2.1.4 2.2.4 ARM JTAG 3.1 18 3.2 18 3.2.1 Multi-ICE Server.18 3.2.2 ADS..21 ARM JTAG 4.1 Multi-ICE Server 33 4.1.1 Multi-ICE Server..... 33 4.1.2

More information

华恒家庭网关方案

华恒家庭网关方案 LINUX V1.5 1 2 1 2 LINUX WINDOWS PC VC LINUX WINDOWS LINUX 90% GUI LINUX C 3 REDHAT 9 LINUX PC TFTP/NFS http://www.hhcn.com/chinese/embedlinux-res.html minicom NFS mount C HHARM9-EDU 1 LINUX HHARM9-EDU

More information

Microsoft Word - 11.doc

Microsoft Word - 11.doc 除 錯 技 巧 您 將 於 本 章 學 到 以 下 各 項 : 如 何 在 Visual C++ 2010 的 除 錯 工 具 控 制 下 執 行 程 式? 如 何 逐 步 地 執 行 程 式 的 敘 述? 如 何 監 看 或 改 變 程 式 中 的 變 數 值? 如 何 監 看 程 式 中 計 算 式 的 值? 何 謂 Call Stack? 何 謂 診 斷 器 (assertion)? 如 何

More information

新・明解C言語入門編『索引』

新・明解C言語入門編『索引』 !... 75!=... 48 "... 234 " "... 9, 84, 240 #define... 118, 213 #include... 148 %... 23 %... 23, 24 %%... 23 %d... 4 %f... 29 %ld... 177 %lf... 31 %lu... 177 %o... 196 %p... 262 %s... 242, 244 %u... 177

More information

untitled

untitled 3 C++ 3.1 3.2 3.3 3.4 new delete 3.5 this 3.6 3.7 3.1 3.1 class struct union struct union C class C++ C++ 3.1 3.1 #include struct STRING { typedef char *CHARPTR; // CHARPTR s; // int strlen(

More information

2013 C 1 # include <stdio.h> 2 int main ( void ) 3 { 4 int cases, a, b, i; 5 scanf ("%d", & cases ); 6 for (i = 0;i < cases ;i ++) 7 { 8 scanf ("%d %d

2013 C 1 # include <stdio.h> 2 int main ( void ) 3 { 4 int cases, a, b, i; 5 scanf (%d, & cases ); 6 for (i = 0;i < cases ;i ++) 7 { 8 scanf (%d %d 2013 18 ( ) 1. C pa.c, pb.c, 2. C++ pa.cpp, pb.cpp, Compilation Error cin scanf Time Limit Exceeded 1: A 5 B 5 C 5 D 5 E 5 F 5 1 2013 C 1 # include 2 int main ( void ) 3 { 4 int cases, a, b,

More information

C C C The Most Beautiful Language and Most Dangerous Language in the Programming World! C 2 C C C 4 C 40 30 10 Project 30 C Project 3 60 Project 40

C C C The Most Beautiful Language and Most Dangerous Language in the Programming World! C 2 C C C 4 C 40 30 10 Project 30 C Project 3 60 Project 40 C C trio@seu.edu.cn C C C C The Most Beautiful Language and Most Dangerous Language in the Programming World! C 2 C C C 4 C 40 30 10 Project 30 C Project 3 60 Project 40 Week3 C Week5 Week5 Memory & Pointer

More information

Microsoft PowerPoint sun-program2.ppt [Compatibility Mode]

Microsoft PowerPoint sun-program2.ppt [Compatibility Mode] 嵌入式系统设计与应用 第五章程序设计与分析 (2) 西安交通大学电信学院 孙宏滨 4 基本编译技术 编译 = 翻译 + 优化 翻译 : 将高级语言程序翻译成低级形式的指令 优化 : 与翻译过程中所使用的语句间相互独立的简单方法相比, 优化可以生成更高指令的代码 编译决定着代码质量 : 占用 CPU 资源 存储器访问调度 代码大小 2 基本编译过程 高级语言代码 语法分析 符号表生成和语义分析 独立于机器的优化

More information

,768 32,767 32K JMP Jnnn (386+) LOOP CALL [Label:] JMP short/near/far address L10: jmp jmp L20: L10 L20

,768 32,767 32K JMP Jnnn (386+) LOOP CALL [Label:] JMP short/near/far address L10: jmp jmp L20: L10 L20 (Jump) (Loop) (Conditional jump) CMP CALL AND SAR/SHR TEST JMP NOT SAL/SHL Jnnn* OR RCR/ROR LOOP XOR RCL/ROL RETn * nnn, JNE JL -128 127-32,768 32,767 32K JMP Jnnn (386+) LOOP CALL [Label:] JMP short/near/far

More information

第 15 章 程 式 編 写 語 言 15.1 程 式 編 写 語 言 的 角 色 程 式 編 寫 語 言 是 程 式 編 寫 員 與 電 腦 溝 通 的 界 面 語 法 是 一 組 規 則 讓 程 式 編 寫 員 將 字 詞 集 合 起 來 電 腦 是 處 理 位 元 和 字 節 的 機 器, 與

第 15 章 程 式 編 写 語 言 15.1 程 式 編 写 語 言 的 角 色 程 式 編 寫 語 言 是 程 式 編 寫 員 與 電 腦 溝 通 的 界 面 語 法 是 一 組 規 則 讓 程 式 編 寫 員 將 字 詞 集 合 起 來 電 腦 是 處 理 位 元 和 字 節 的 機 器, 與 程 式 編 写 語 言 在 完 成 這 章 後, 你 將 能 夠 了 解 程 式 編 写 語 言 的 功 能 了 解 高 階 語 言 和 低 階 語 言 之 間 的 分 別 知 道 翻 譯 程 式 的 意 義 和 能 夠 把 翻 譯 程 式 分 類 為 : 匯 編 程 式 編 譯 程 式 和 解 譯 程 式 認 識 不 同 翻 譯 程 式 的 優 點 和 缺 點 程 式 是 指 揮 電 腦 的 指

More information

EK-STM32F

EK-STM32F STMEVKIT-STM32F10xx8 软 件 开 发 入 门 指 南 目 录 1 EWARM 安 装... 1 1.1 第 一 步 : 在 线 注 册... 1 1.2 第 二 步 : 下 载 软 件... 2 1.3 第 三 步 : 安 装 EWARM... 3 2 基 于 STMEVKIT-STM32F10xx8 的 示 例 代 码 运 行... 6 2.1 GPIO Demo... 6 2.2

More information

第5章:汇编语言程序设计

第5章:汇编语言程序设计 第 5 章 : 汇编语言程序设计 程 汇编语言指令格式 系统伪指令 存储器选择方式 常用子程序 1 汇编语言程序设计 PIC 指令系统 语言系统 指 CPU 编 器语言 器语言 器语言 设计 用 语言 设计 语言 汇编语言 2 汇编语言指令格式 汇编语言指令格式 ( 指令 ) label opcode operand comment 指令 用 存 指令 指令语 3 汇编语言指令格式 1 指令 用 指令

More information

1 LINUX IDE Emacs gcc gdb Emacs + gcc + gdb IDE Emacs IDE C Emacs Emacs IDE ICE Integrated Computing Environment Emacs Unix Linux Emacs Emacs Emacs Un

1 LINUX IDE Emacs gcc gdb Emacs + gcc + gdb IDE Emacs IDE C Emacs Emacs IDE ICE Integrated Computing Environment Emacs Unix Linux Emacs Emacs Emacs Un Linux C July 27, 2016 Contents 1 Linux IDE 1 2 GCC 3 2.1 hello.c hello.exe........................... 5 2.2............................... 9 2.2.1 -Wall................................ 9 2.2.2 -E..................................

More information

WWW PHP

WWW PHP WWW PHP 2003 1 2 function function_name (parameter 1, parameter 2, parameter n ) statement list function_name sin, Sin, SIN parameter 1, parameter 2, parameter n 0 1 1 PHP HTML 3 function strcat ($left,

More information

1 CPU

1 CPU 2000 Tel 82316285 82317634 Mail liuxd@buaa.edu.cn 1 CPU 2 CPU 7 72 A B 85 15 3 1/2 M301 2~17 : 3/4 1/2 323 IBM PC 1. 2. 3. 1. 2. 3. 1.1 Hardware Software 1.2 M3 M2 M1 1.2 M3 M1 M2 M2 M1 M1 M1 1.2 M3 M1

More information

Microsoft Word - 01.DOC

Microsoft Word - 01.DOC 第 1 章 JavaScript 简 介 JavaScript 是 NetScape 公 司 为 Navigator 浏 览 器 开 发 的, 是 写 在 HTML 文 件 中 的 一 种 脚 本 语 言, 能 实 现 网 页 内 容 的 交 互 显 示 当 用 户 在 客 户 端 显 示 该 网 页 时, 浏 览 器 就 会 执 行 JavaScript 程 序, 用 户 通 过 交 互 式 的

More information

2/14 Buffer I12, /* x=2, buffer = I 1 2 */ Buffer I243, /* x=34, buffer = I 2 43 */ x=56, buffer = I243 Buffer I243I265 code_int(int x, char *buffer)

2/14 Buffer I12, /* x=2, buffer = I 1 2 */ Buffer I243, /* x=34, buffer = I 2 43 */ x=56, buffer = I243 Buffer I243I265 code_int(int x, char *buffer) 1/14 IBM Rational Test RealTime IBM, 2004 7 01 50% IBM Rational Test RealTime IBM Rational Test RealTime 1. 50% IBM Rational Test RealTime IBM Rational Test RealTime 2. IBM Rational Test RealTime Test

More information

NEXT SDT2.51 C:\ARM251 SDT2.51 ARM SDT 2.51 ARM PROJECT MANAGER SDT 2

NEXT SDT2.51 C:\ARM251 SDT2.51 ARM SDT 2.51 ARM PROJECT MANAGER SDT 2 S3C44B0 SDT DRAGNBOY MICROSTAR ARM 51 ARM S3C44B0 ARM SDT2.51 IAR ADS SDT2.51 S3C44B0 LEDTEST SDT ARM 1 2 SDT embed.8800.org SDT2.51 SDT2.51 ARM ARM CPU ARM SDT ADS ADS MULTI-ICE SDT JTAG JTAG SDT SDT2.51

More information

. (A) (B) (C) A (D) (E). (A)(B)(C)(D)(E) A

. (A) (B) (C) A (D) (E). (A)(B)(C)(D)(E) A . () () () () () (A) (B) (C) B (D) (E). (A) (B) (C) E (D) (E) (A) (B) (C) (D). () () () () E (A) (B) (C) (D) (E). C (A) (B) (C) (D) (E). (A) (B) (C) (D) D (E). () - () - () - () - () - D (A) (B) (C) (D)

More information

目 录

目 录 1 Quick51...1 1.1 SmartSOPC Quick51...1 1.2 Quick51...1 1.3 Quick51...2 2 Keil C51 Quick51...4 2.1 Keil C51...4 2.2 Keil C51...4 2.3 1 Keil C51...4 2.4 Flash Magic...9 2.5 ISP...9 2.6...10 2.7 Keil C51...12

More information

内文标题采用宋体小三,居中,加粗;一级标题使用小四宋体加粗;正文宋体五号,行测讲义答案由于均为选择题,则段首无需空格,申论讲义答案段首需空两格;全文使用1

内文标题采用宋体小三,居中,加粗;一级标题使用小四宋体加粗;正文宋体五号,行测讲义答案由于均为选择题,则段首无需空格,申论讲义答案段首需空两格;全文使用1 2011 年 吉 林 省 考 行 政 职 业 能 力 测 验 模 拟 试 卷 ( 甲 级 ) 这 项 考 试 共 有 四 个 部 分,100 道 题, 总 时 限 90 分 钟 各 个 部 分 部 分 别 计 时, 但 都 给 出 了 参 考 时 限, 供 你 参 考 分 配 时 间 请 在 机 读 答 题 卡 上 严 格 按 照 要 求 填 写 好 自 己 的 姓 名 涂 写 好 准 考 证 号

More information

untitled

untitled 1 5 IBM Intel 1. IBM 第 1/175 页 第 2/175 页 第 3/175 页 80 第 4/175 页 2. IBM 第 5/175 页 3. (1) 第 6/175 页 第 7/175 页 第 8/175 页 = = 第 9/175 页 = = = = = 第 10/175 页 = = = = = = = = 3. (2) 第 11/175 页 第 12/175 页 第 13/175

More information

提问袁小兵:

提问袁小兵: C++ 面 试 试 题 汇 总 柯 贤 富 管 理 软 件 需 求 分 析 篇 1. STL 类 模 板 标 准 库 中 容 器 和 算 法 这 部 分 一 般 称 为 标 准 模 板 库 2. 为 什 么 定 义 虚 的 析 构 函 数? 避 免 内 存 问 题, 当 你 可 能 通 过 基 类 指 针 删 除 派 生 类 对 象 时 必 须 保 证 基 类 析 构 函 数 为 虚 函 数 3.

More information

Microsoft PowerPoint ren-advanced topics [兼容模式]

Microsoft PowerPoint ren-advanced topics [兼容模式] 嵌入式系统设计与应用 第五章 ARM 与 Thumb 指令集 西安交通大学电信学院 任鹏举 1 深入 ARM 指令集 在以字节为单位寻址的存储器中, 有两种方式来存储字, 这根据最低有效字节与相邻较高有效字节相比是存在较低的还是较高的地址来划分 On holy wars and a plea for peace 小端 大端 条件执行 ARM 指令集不同寻常的特征是, 条件执行不仅应用于转移指令, 也可以应用于所有的

More information

untitled

untitled XP248 1 XP248 XP248 DCS PLC SCnet SCnet DCS SCnet DCS 1.1 XP248 Modbus HostLink Modbus XP248 4 DB25 XP248 MODBUS XP248 SCControl XP248 4 RS232 RS485 4 32 XP248 COM0-COM1 COM2-COM3 1200 19200bit/s 5 8 1

More information

Fun Time (1) What happens in memory? 1 i n t i ; 2 s h o r t j ; 3 double k ; 4 char c = a ; 5 i = 3; j = 2; 6 k = i j ; H.-T. Lin (NTU CSIE) Referenc

Fun Time (1) What happens in memory? 1 i n t i ; 2 s h o r t j ; 3 double k ; 4 char c = a ; 5 i = 3; j = 2; 6 k = i j ; H.-T. Lin (NTU CSIE) Referenc References (Section 5.2) Hsuan-Tien Lin Deptartment of CSIE, NTU OOP Class, March 15-16, 2010 H.-T. Lin (NTU CSIE) References OOP 03/15-16/2010 0 / 22 Fun Time (1) What happens in memory? 1 i n t i ; 2

More information

E. (A) (B) (C) (D). () () () (A) (B) (C) (D) (E). () () () (A) (B) (C) (D) (E). (A)(B)(C) (D) (E) (A) (B) (C) (D) (E) (A) (B)(C) (D) (E). (A) (B) (C)

E. (A) (B) (C) (D). () () () (A) (B) (C) (D) (E). () () () (A) (B) (C) (D) (E). (A)(B)(C) (D) (E) (A) (B) (C) (D) (E) (A) (B)(C) (D) (E). (A) (B) (C) . (A) (B) (C) (D) (A) (B) (C)(D)(E). (A) (B) (C) (D) (E) (A) (B) (C) (D). (A) (B) (C) (D) (E) (A) (B) (C) (D) (E). (A) (B) (C) (D) (E). (A) (B) (C) (D) (E). (A) (B) (C) (D) (E) (A) (B) (C) (D) (E). (A)

More information

OOP with Java 通知 Project 2 提交时间 : 3 月 14 日晚 9 点 另一名助教 : 王桢 学习使用文本编辑器 学习使用 cmd: Power shell 阅读参考资料

OOP with Java 通知 Project 2 提交时间 : 3 月 14 日晚 9 点 另一名助教 : 王桢   学习使用文本编辑器 学习使用 cmd: Power shell 阅读参考资料 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 2 提交时间 : 3 月 14 日晚 9 点 另一名助教 : 王桢 Email: 51141201063@ecnu.cn 学习使用文本编辑器 学习使用 cmd: Power shell 阅读参考资料 OOP with Java Java 类型 引用 不可变类型 对象存储位置 作用域 OOP

More information

DPJJX1.DOC

DPJJX1.DOC 8051 111 2K 1 2 3 ' ' 1 CPU RAM ROM / A/D D/A PC CPU 40 68 10 20 8 51 PIII 8051 2 MCS51 8051 8031 89C51 8051 8031 89C51? MCS51 INTEL INTEL 8031 8051 8751 8032 8052 8752 8051 8051 8051 MCS51 8031 8031

More information

L15 MIPS Assembly

L15 MIPS Assembly Lecture 20: MIPS Assembly Language II Example: 过 程 调 用 int i; i 是 全 局 静 态 变 量 void set_array(int num) { array 数 组 是 局 部 变 量 int array[10]; for (i = 0; i < 10; i ++) { set_array 是 调 用 过 程 arrar[i] = compare

More information

ARM处理器中ARM和THUMB状态的切换(Interworking)

ARM处理器中ARM和THUMB状态的切换(Interworking) http//www.elecfans.com 电子发烧友 http//bbs.elecfans.com ARM 处理器中 ARM 和 Thumb 状态的切换 (Interworking) 潘朝霞北京交通大学电气学院王毅北京交通大学电气学院 摘要 主要介绍了在 ARM 处理器中,ARM/Thumb 状态切换的原因和方法 在基于 ARM 处理器的嵌入式开发中, 为了增强系统的灵活性以及提高系统的整体性能经常需要使用

More information

C/C++ 语言 - 循环

C/C++ 语言 - 循环 C/C++ Table of contents 7. 1. 2. while 3. 4. 5. for 6. 8. (do while) 9. 10. (nested loop) 11. 12. 13. 1 // summing.c: # include int main ( void ) { long num ; long sum = 0L; int status ; printf

More information

untitled

untitled CPU!! 00-11-8 Liping zhang, Tsinghua 1 : ADD(r1, r, r) CMPLEC(r, 5, r0) MUL(r1, r, r) SUB(r1, r, r5) ADD r, ( ) r CMP. CMP r.. t t + 1 t + t + t + t + 5 t + 6 IF( ) ADD CMP MUL SUB RF NOP ADD CMP MUL SUB

More information

nooog

nooog C : : : , C C,,, C, C,, C ( ), ( ) C,,, ;,, ; C,,, ;, ;, ;, ;,,,, ;,,, ; : 1 9, 2 3, 4, 5, 6 10 11, 7 8, 12 13,,,,, 2008 1 1 (1 ) 1.1 (1 ) 1.1.1 ( ) 1.1.2 ( ) 1.1.3 ( ) 1.1.4 ( ) 1.1.5 ( ) 1.2 ( ) 1.2.1

More information

2007

2007 2007 年 上 半 年 软 件 评 测 师 考 试 浅 析 作 者 : 陈 嘉 祥 方 耀 公 司 : 广 东 亿 迅 科 技 有 限 公 司 ( 质 量 管 理 部 ) 1 简 介 1.1 目 的 本 文 章 主 要 介 绍 软 件 评 测 师 考 试 的 范 围 内 容 以 及 其 重 要 性, 还 有 相 关 的 试 题 分 析 1.2 适 用 范 围 有 意 参 与 或 将 来 有 意 参

More information

untitled

untitled 2009 6 20 17 864 2008 200978 2 200979 4 200981 25 200982 26 60 200983 27 200984 28 20093857 31 1 200978 200625 5 20098 2009 3 5 14 14 2008 2 2008 14 2008 14 4247317.56 3620679.57 2008 4296147.94 3624433.77

More information

A B C D E F 3 B C D E F A 3 1995 13 27 299 1993 45 29 301 1995 47 5 12 30 6 12 31 67 17 1 1 4 8 00 2 145 1 1 11 12 1 1 1 1 1 1 1 1 1+ + + + + + + 2 6 12 20 30 42 56 72 1 1 1 1 2 + + + + 1 3 3 5 5 7

More information

OOP with Java 通知 Project 4: 4 月 19 日晚 9 点

OOP with Java 通知 Project 4: 4 月 19 日晚 9 点 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 4: 4 月 19 日晚 9 点 复习 类的复用 组合 (composition): has-a 关系 class MyType { public int i; public double d; public char c; public void set(double x) { d

More information

Microsoft PowerPoint - 8-ADS介绍 [兼容模式]

Microsoft PowerPoint - 8-ADS介绍 [兼容模式] ARM Developer Suite 介绍 T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D 1 ADS 1.2 ADS1.2 是为嵌入式 ARM 设计的一整套软件开发工具 从最初的软件原型到最终优化的 ROM 代码 ADS1.2 发布于 2001 的 12 月份 支持的主机系统 IBM compatible PCs

More information

Chapter12 Derived Classes

Chapter12   Derived Classes 继 承 -- 派 生 类 复 习 1. 有 下 面 类 的 说 明, 有 错 误 的 语 句 是 : class X { A) const int a; B) X(); C) X(int val) {a=2 D) ~X(); 答 案 :C 不 正 确, 应 改 成 X(int val) : a(2) { 2. 下 列 静 态 数 据 成 员 的 特 性 中, 错 误 的 是 A) 说 明 静 态 数

More information

3. 給 定 一 整 數 陣 列 a[0] a[1] a[99] 且 a[k]=3k+1, 以 value=100 呼 叫 以 下 兩 函 式, 假 設 函 式 f1 及 f2 之 while 迴 圈 主 體 分 別 執 行 n1 與 n2 次 (i.e, 計 算 if 敘 述 執 行 次 數, 不

3. 給 定 一 整 數 陣 列 a[0] a[1] a[99] 且 a[k]=3k+1, 以 value=100 呼 叫 以 下 兩 函 式, 假 設 函 式 f1 及 f2 之 while 迴 圈 主 體 分 別 執 行 n1 與 n2 次 (i.e, 計 算 if 敘 述 執 行 次 數, 不 1. 右 側 程 式 正 確 的 輸 出 應 該 如 下 : * *** ***** ******* ********* 在 不 修 改 右 側 程 式 之 第 4 行 及 第 7 行 程 式 碼 的 前 提 下, 最 少 需 修 改 幾 行 程 式 碼 以 得 到 正 確 輸 出? (A) 1 (B) 2 (C) 3 (D) 4 1 int k = 4; 2 int m = 1; 3 for (int

More information

2013 C 1 #include <stdio.h> 2 int main(void) 3 { 4 int cases, i; 5 long long a, b; 6 scanf("%d", &cases); 7 for (i = 0; i < cases; i++) 8 { 9 scanf("%

2013 C 1 #include <stdio.h> 2 int main(void) 3 { 4 int cases, i; 5 long long a, b; 6 scanf(%d, &cases); 7 for (i = 0; i < cases; i++) 8 { 9 scanf(% 2013 ( 28 ) ( ) 1. C pa.c, pb.c, 2. C++ pa.cpp, pb.cpp Compilation Error long long cin scanf Time Limit Exceeded 1: A 10 B 1 C 1 D 5 E 5 F 1 G II 5 H 30 1 2013 C 1 #include 2 int main(void) 3

More information

用户大会 论文集2.2.doc

用户大会 论文集2.2.doc MagGis MapGis GIS MagGis API DLL MapGis VC++ VB BC++ Delphi., Windows API MapGis VC++V Delphi Delphi Delphi MapGis Delphi Delphi Windows Delphi Delphi MapGis MapGis DLL API MapGis function _InitWorkArea(HINST:Integer):Integer;

More information

Microsoft Word - 正文.doc

Microsoft Word - 正文.doc 1 2 1 2 3 4 5 6 7 8 9 10 3 1 150 2 150 1 1 1.1 1.1.1 1.2 1.2.1 1.2.2 1.2.3 1.3 1.3.1 1.3.2 1.4 1.4.1 CPU 1.4.2 I/O 1.4.3 I/O 1.5 1.5.1 CISC RISC 1.5.2 1.5.3 1.6 1.6.1 1.6.2 N 1.6.3 2 2.1 2.1.1 2.1.2 2.1.3

More information

戲劇研究 創刊號 詞之雅化 實為 折子戲 源生之三個重要背景 歷代戲曲劇種如先秦至唐代之 戲曲小戲 宋金雜劇院本 北曲雜劇四折每折作獨立性演出 乃至明清民間 小戲與南雜劇之一折短劇 均實為折子戲之 先驅 則明正德至嘉靖間北劇南 戲選本之 摘套 與 散齣 迎神賽社禮節傳簿 中之 零折散齣 均可 視之為

戲劇研究 創刊號 詞之雅化 實為 折子戲 源生之三個重要背景 歷代戲曲劇種如先秦至唐代之 戲曲小戲 宋金雜劇院本 北曲雜劇四折每折作獨立性演出 乃至明清民間 小戲與南雜劇之一折短劇 均實為折子戲之 先驅 則明正德至嘉靖間北劇南 戲選本之 摘套 與 散齣 迎神賽社禮節傳簿 中之 零折散齣 均可 視之為 戲 劇 研 究 200 年1月 創刊號 頁1 2 論說 折子戲 曾永義 世新大學講座教授 緒論 折子戲 這一戲曲名詞 大家耳熟能詳 但如果進一步思考 1. 折子戲 之名始於何時 2. 折子戲 之詞彙結構如何形成 3.如果把 折子戲 當作一生命體 那麼其源生 形成 成熟與衰老的不同 階段 各自如何 其源生 形成的背景如何 其成熟興盛和衰老頹廢的原因又是 如何 4.當折子戲成熟之時 折子戲本身具有何等樣的周延義涵

More information

epub 33-8

epub 33-8 8 1) 2) 3) A S C I I 4 C I / O I / 8.1 8.1.1 1. ANSI C F I L E s t d i o. h typedef struct i n t _ f d ; i n t _ c l e f t ; i n t _ m o d e ; c h a r *_ n e x t ; char *_buff; /* /* /* /* /* 1 5 4 C FILE

More information

, 7, Windows,,,, : ,,,, ;,, ( CIP) /,,. : ;, ( 21 ) ISBN : -. TP CIP ( 2005) 1

, 7, Windows,,,, : ,,,, ;,, ( CIP) /,,. : ;, ( 21 ) ISBN : -. TP CIP ( 2005) 1 21 , 7, Windows,,,, : 010-62782989 13501256678 13801310933,,,, ;,, ( CIP) /,,. : ;, 2005. 11 ( 21 ) ISBN 7-81082 - 634-4... - : -. TP316-44 CIP ( 2005) 123583 : : : : 100084 : 010-62776969 : 100044 : 010-51686414

More information

Microsoft Word - 财务d08z.doc

Microsoft Word - 财务d08z.doc 版 权 所 有 侵 权 必 究 图 书 在 版 编 目 (CIP) 数 据 用 好 Excel(2007 版 ): 财 务 篇 / 王 维, 云 大 勇 编 著. 北 京 : 中 国 宇 航 出 版 社,2007.5 ( 时 尚 IT 生 活 秀 ) ISBN 978-7-80218-208-0 Ⅰ. 用 Ⅱ.1 王 2 云 Ⅲ. 电 子 表 格 系 统,Excel Ⅳ.TP391.13 中 国 版

More information

民國八十九年台灣地區在校學生性知識、態度與行為研究調查

民國八十九年台灣地區在校學生性知識、態度與行為研究調查 84 年 台 灣 地 區 在 校 學 生 性 知 識 態 度 與 行 為 研 究 調 查 過 錄 編 碼 簿 題 號 變 項 名 稱 變 項 說 明 選 項 數 值 說 明 備 註 i_no 學 生 編 號 問 卷 流 水 號 location 學 校 所 在 縣 市 編 號 1 台 北 市 2 基 隆 市 3 台 中 市 4 台 南 市 5 高 雄 市 6 新 竹 市 7 嘉 義 市 21 宜 蘭

More information

Pengju 嵌入式系统设计与应用 第五章程序设计与分析 (2) 西安交通大学电信学院 任鹏举

Pengju 嵌入式系统设计与应用 第五章程序设计与分析 (2) 西安交通大学电信学院 任鹏举 嵌入式系统设计与应用 第五章程序设计与分析 (2) 西安交通大学电信学院 任鹏举 4 基本编译技术 编译 = 翻译 + 优化 翻译 : 将高级语言程序翻译成低级形式的指令 正确的理解程序 ( 功能 ) 优化 : 与翻译过程中所使用的语句间相互独立的简单方法相比, 优化可以生成更高效指令的代码 高效的执行程序 ( 性能 ) 编译决定着代码质量 : 占用 CPU 资源存储器访问调度 代码大小 2 基本编译过程

More information

( 一 ) 全 面 贯 彻 党 和 国 家 的 教 育 方 针 政 策, 落 实 国 家 有 关 教 育 的 法 律 法 规 ; 研 究 草 拟 江 苏 省 教 育 法 规 和 政 策, 并 组 织 实 施 ( 二 ) 研 究 教 育 发 展 战 略 思 路, 统 筹 规 划 协 调 指 导 江 苏

( 一 ) 全 面 贯 彻 党 和 国 家 的 教 育 方 针 政 策, 落 实 国 家 有 关 教 育 的 法 律 法 规 ; 研 究 草 拟 江 苏 省 教 育 法 规 和 政 策, 并 组 织 实 施 ( 二 ) 研 究 教 育 发 展 战 略 思 路, 统 筹 规 划 协 调 指 导 江 苏 2008 年 江 苏 高 考 改 革 新 方 案 引 争 议 1. 案 例 概 述 1.1 案 例 简 介 2008 年 高 考 新 方 案 是 江 苏 省 10 年 内 的 第 五 套 高 考 方 案, 此 方 案 11 月 28 日 一 出 台 就 饱 受 争 议, 被 指 有 轻 理 化 的 嫌 疑 且 在 录 取 阶 段 出 现 了 录 取 准 则 不 明 确 的 现 象 针 对 此 现 象,

More information

14. 阿 亮 在 寒 假 春 節 期 間 與 父 母 到 一 座 廟 裡 拜 拜, 廟 裡 的 神 有 掌 生 死 簿 的 判 官 勾 攝 生 魂 的 黑 白 無 常 執 行 拘 提 魂 魄 的 牛 頭 馬 面, 整 間 廟 看 起 來 有 些 陰 森, 請 問 阿 亮 到 了 哪 一 座 廟 內

14. 阿 亮 在 寒 假 春 節 期 間 與 父 母 到 一 座 廟 裡 拜 拜, 廟 裡 的 神 有 掌 生 死 簿 的 判 官 勾 攝 生 魂 的 黑 白 無 常 執 行 拘 提 魂 魄 的 牛 頭 馬 面, 整 間 廟 看 起 來 有 些 陰 森, 請 問 阿 亮 到 了 哪 一 座 廟 內 師 大 附 中 98 學 年 度 第 1 學 期 高 3 選 修 歷 史 上 第 1 類 組 第 二 次 期 中 考 一 單 選 題 ( 一 題 2 分 共 48 題 不 倒 扣 ) 1. 有 一 段 資 料 提 到 先 秦 某 一 家 的 學 說 : 有 支 持 泛 神 主 義 抒 情 主 義 和 無 政 府 主 義 的 趨 向 他 們 崇 信 宇 宙 間 的 一 元 組 織, 願 意 回 歸 到

More information

3.1 num = 3 ch = 'C' 2

3.1 num = 3 ch = 'C' 2 Java 1 3.1 num = 3 ch = 'C' 2 final 3.1 final : final final double PI=3.1415926; 3 3.2 4 int 3.2 (long int) (int) (short int) (byte) short sum; // sum 5 3.2 Java int long num=32967359818l; C:\java\app3_2.java:6:

More information

Microsoft Word - CIN-DLL.doc

Microsoft Word - CIN-DLL.doc 6.3. 调 用 动 态 链 接 库 (DLL) 相 对 于 CIN 来 讲,NI 更 推 荐 用 户 使 用 DLL 来 共 享 基 于 文 本 编 程 语 言 开 发 的 代 码 除 了 共 享 或 重 复 利 用 代 码, 开 发 人 员 还 能 利 用 DLL 封 装 软 件 的 功 能 模 块, 以 便 这 些 模 块 能 被 不 同 开 发 工 具 利 用 在 LabVIEW 中 使 用

More information

OOP with Java 通知 Project 4: 4 月 18 日晚 9 点 关于抄袭 没有分数

OOP with Java 通知 Project 4: 4 月 18 日晚 9 点 关于抄袭 没有分数 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 4: 4 月 18 日晚 9 点 关于抄袭 没有分数 复习 类的复用 组合 (composition): has-a 关系 class MyType { public int i; public double d; public char c; public void set(double

More information

untitled

untitled www.mcudriver.cn 1.1 / 1) WinAVR20070525 2) Source Insight 3) ISP 4) PonyProg ISP 5) USB 6) 1.2. MCU ATMEGA16 1.3. AVR8 1.4 LED0~LED7 1 1.5 #include // Program 1.1 LED.C #define uchar unsigned

More information

Microsoft PowerPoint - os_4.ppt

Microsoft PowerPoint - os_4.ppt 行 程 資 科 系 林 偉 川 行 程 概 念 行 程 與 程 式 主 要 的 不 同 點 : 程 式 是 被 放 在 外 部 的 儲 存 裝 置 如 磁 碟 上, 而 行 程 則 被 放 在 記 憶 體 中 程 式 在 儲 存 裝 置 中 是 靜 態 的, 而 行 程 在 記 憶 體 中 是 動 態 的, 它 會 隨 著 一 些 事 件 的 發 生 而 產 生 相 對 的 改 變 行 程, 就 是

More information

民 國 105 年 大 專 程 度 義 務 役 預 備 軍 官 預 備 士 官 考 選 簡 章 目 錄 壹 考 選 依 據 1 貳 考 ( 甄 ) 選 對 象 1 參 資 格 規 定 1 肆 員 額 及 專 長 類 別 2 伍 報 名 及 選 填 志 願 日 期 方 式 3 陸 選 填 官 科 (

民 國 105 年 大 專 程 度 義 務 役 預 備 軍 官 預 備 士 官 考 選 簡 章 目 錄 壹 考 選 依 據 1 貳 考 ( 甄 ) 選 對 象 1 參 資 格 規 定 1 肆 員 額 及 專 長 類 別 2 伍 報 名 及 選 填 志 願 日 期 方 式 3 陸 選 填 官 科 ( 民 國 105 年 大 專 程 度 義 務 役 預 備 軍 官 預 備 士 官 考 選 期 程 表 日 期 執 行 項 目 3 月 1 日 (8 時 起 ) 至 3 月 21 日 (17 時 止 ) 網 路 報 名 並 完 成 列 印 3 月 22 日 (17 時 止 ) 各 校 承 辦 人 員 收 報 名 件 截 止 3 月 30 日 4 月 11 日 5 月 18 日 5 月 27 日 (17

More information