图8.4socket套接字发送、接收数据示意图2.套接字缓冲区的特性◆缓冲区在每个TCP套接字中单独存在;◆I/O缓冲区在创建套接字时自动生成;◆即使关闭套接字也会继续传送输出缓冲区中遗留的数据;◆关闭套接字将丢失输入缓冲区中的数据。......
2023-11-19
ARM汇编语言程序是由机器指令、伪指令和伪操作组成的。
在ARM汇编语言程序中,有一些特殊指令助记符,这些助记符与指令系统的助记符不同,没有相对应的操作码,通常称这些特殊指令助记符为伪操作标识符,它们所完成的操作称为伪操作(directive)。伪操作在源程序中的作用是为了完成汇编程序做各种准备工作的,这些伪操作仅在汇编过程中起作用,一旦汇编结束,伪操作的使命就结束。
在ARM的汇编程序中,伪操作主要有符号定义伪操作、数据定义伪操作、汇编控制伪操作和杂项伪操作等。
1.符号定义伪操作
符号定义伪操作用于定义ARM汇编程序中的变量、对变量赋值及定义寄存器名称等操作。常见的伪操作有以下几种。
●GBLA,GBLL和GBLS:定义全局变量。
●LCLA,LCLL和LCLS:定义局部变量。
●SETA,SETL和SETS:为变量赋值。
●RLIST:为通用寄存器列表定义名称。
●CN:为协处理器的寄存器定义名称。
●CP:为协处理器定义名称。
●DN和SN:为VFP的寄存器定义名称。
●FN:为FPA的浮点寄存器定义名称。
2.数据定义伪操作
数据定义伪操作用于数据表定义、文字池定义、数据空间分配等。常用的伪操作有:
●LTORG:声明一个数据缓冲池的开始。
●MAP:定义一个结构化的内存表的首地址。
●FIELD:定义结构化内存表的一个数据域。
●SPACE:分配一块内存空间,并用0初始化。
●DCB:分配一段字节的内存单元,并用指定的数据初始化。
●DCD和DCDU:分配一段字的内存单元,并用指定的数据初始化。
●DCFD和DCFDU:分配一段双字的内存单元,并用双精度的浮点数据初始化。
●DCFS和DCFSU:分配一段字的内存单元,并用单精度的浮点数据初始化。(www.chuimin.cn)
●DCQ和DCQU:分配一段双字的内存单元,并用64位整型数据初始化。
●DCW和DCWU:分配一段半字的内存单元,并用指定的数据初始化。
3.汇编控制伪操作
汇编控制伪操作用于条件汇编、宏定义、重复汇编控制等,常用的伪操作有:
●IF、ELSE和ENDIF:根据条件把一段源程序代码包括在汇编程序内或排除在程序之外。
●WHILE和WEND:根据条件重复汇编相同的源程序代码。
●MACRO和MEND:MACRO标识宏定义的开始,MEND标识宏定义结束。用MACRO和MEND定义一段代码,称为宏定义体,在程序中可以通过宏指令多次调用该代码段。MACRO、MEND伪操作可以嵌套使用。
●MEXIT:用于从宏定义中跳转出去。
4.杂项伪操作
ARM汇编中还有一些其他的伪操作,在汇编程序中经常会被使用,称为杂项伪操作。杂项伪操作包括段定义伪操作、入口点设置伪操作、包含文件伪操作、标号导出伪操作或引入声明伪操作等。常用的伪操作有:
●AREA:定义一个代码段或数据段。
●ALIGN:使程序当前位置满足一定的对齐方式。
●ENTRY:指定程序入口点。
●END:指示汇编源程序结束。
●CODE16和CODE32:定义16位Thumb和32位ARM指令的起始位置。
●EQU:为数字常量、基于寄存器的值和程序中的标号定义一个字符名称。
●EXPORT和GLOBAL:声明一个全局的符号,该符号可在其他的文件中引用。
●IMPORT和EXTERN:通知编译器要使用的符号名称在其他的源文件中定义,但要在当前源文件中引用。
●GET和INCLUDE:将一个源文件包含到当前的源文件中。
●INCBIN:将一个目标文件或数据文件不作任何修改地包含到当前源文件。
●RN:给特定的寄存器定义名称。
●ROUT:定义局部变量的有效范围。
有关ARM嵌入式系统原理与应用的文章
图8.4socket套接字发送、接收数据示意图2.套接字缓冲区的特性◆缓冲区在每个TCP套接字中单独存在;◆I/O缓冲区在创建套接字时自动生成;◆即使关闭套接字也会继续传送输出缓冲区中遗留的数据;◆关闭套接字将丢失输入缓冲区中的数据。......
2023-11-19
ARM微处理器已经遍及工业控制、消费类电子通信系统、网络系统、无线系统各类产品市场,基于ARM技术的微处理器应用占据了32位RISC微处理器80%以上的市场份额。ARM嵌入式技术在联网方面的优势,为弧焊电源实现网络化控制奠定了基础。ARM9可以达到180~200MHz的工作速率,它能驱动的周边装置比ARM7多,应用范围也比较广。ATMEL公司的AT91AM9200是基于ARM9的,具有丰富的接口功能。ARM芯片通信接口能力强,一般用于焊接过程及设备人机界面系统的核心芯片。......
2023-06-26
Web服务器和HTTP服务器可以说是同一个东西,当然非得细分的话,HTTP服务器是建立在HTTP协议之上的提供文档浏览的服务器,更多的是提供静态的文件。而Web服务器涵盖了HTTP服务器,Web服务器不仅能够存储信息,还能在用户通过Web浏览器提供的信息的基础上运行脚本和程序。图11.2W eb服务器工作原理图我们以浏览器作为客户端,完成Web服务的工作流程讲述。Web服务器是以短连接为主,并且获取的数据到达浏览器的那一刻一定是静态的不变的。......
2023-11-19
编译完成程序后,在工程可执行程序所在文件夹下双击hello程序出现Qt版Hello World程序界面,整个Qt应用程序窗体都被一个按钮覆盖,这是程序第13行设置窗体主控件的结果。用户单击按钮后没有任何反映,这是由于没有添加QPushButton的处理函数,系统默认不做任何处理。文本界面风格的Hello World程序修改后的Hello World程序上述程序实例展示了QLabel组件的功能。Qt支持字符串使用HTML语法格式描述,Qt会解释HTML语法的含义并且显示正确的结果。......
2023-11-19
嵌入式系统的发展大致经历了嵌入式微控制器、嵌入式微处理器和嵌入式数字信号处理器、嵌入式片上系统和以Internet为标志的嵌入式系统等阶段。嵌入式系统的出现最初是基于单片机的,这一阶段的嵌入式系统硬件是单片机,软件停留在无操作系统阶段,采用汇编语言实现系统的功能。第四阶段是以Internet为标志的嵌入式系统。......
2023-11-19
Bootloader是具有引导功能的程序,在嵌入式系统中,Bootloader是系统加电后运行的第一段代码。Bootloader运行在内核之前,其作用是进行基本的初始化工作。图6.13Linux系统的典型分区结构BootLoader是严重地依赖于硬件而实现的,其任务可以划分为两个阶段:第一阶段●基本硬件设备初始化;●为第二阶段准备RAM空间;●复制Bootloader的第二阶段代码到RAM;●设置堆栈;●跳转到第二阶段的C程序入口点。......
2023-11-19
在PDA类的设备中,系统在全速运行的时候远比空闲的时候少,所以可以通过设置,使CPU尽可能工作在空闲状态,然后通过相应的中断唤醒CPU,恢复到正常工作模式,处理响应的事件,然后再进入空闲模式。CPU空闲时,降低时钟频率;处于工作状态时,提高时钟频率以全速运行处理事务。......
2023-11-08
Cortex-A8处理器有40个32位寄存器,分为33个通用寄存器和7个程序状态寄存器。表2.4ARM状态下Cortex-A8寄存器组②R13是堆栈指针寄存器,用于指向堆栈区的栈顶。表2.5程序状态寄存器位格式条件代码标志位N、Z、C和V位都是条件代码标志。......
2023-11-19
相关推荐