Welcome 微信登录
编程资源 图片资源库 蚂蚁家优选 PDF转换器

首页 / 操作系统 / Linux

基于C语言的状态机实现技术

基于C语言的状态机实现技术

一、简介有限状态机是一种用来进行对象行为建模的工具,其作用主要是描述对象在它的生命周期内所经历的状态序列,以及如何响应来自外界的各种事件。有限状态机(Finite State Machine或者Finite State Automata)是软件领域中一种重要的工具,很多东西的模型实际上就是有限状态机。有限状态机(FSM)可以用作程序的控制结构。FSM对于那些基于输入的在几个不同的可选动作中进行循环的程序尤其合适。投币售货机就是FSM的一个好例子。在投币售货...
插入排序(C语言版)

插入排序(C语言版)

前言插入排序(insertion sort)的基本思想:每次将一个待排序的记录,按其关键字大小插入到前面已经排序好的序列中,直到全部记录插入完成为止.直接插入排序基本思想假设待排序的记录存放在数组R[1..n]中。初始时,R[1]自成1个有序区,无序区为R[2..n].从i = 2起直到i = n 为止,依次将R[i]插入当前的有序区R[1..i - 1]中,生成含n个记录的有序区.排序方法将待插入记录R[i]的关键字从右向左依次与有序区中记录R[j](j...
北邮2011网研复试上机题——复数集合

北邮2011网研复试上机题——复数集合

前言从我开始在中传读研开始到现在已经有将近一年半了,从最初的计算机小白到现在的好联系服务器端主力开发成员,我能每天感受到自己的进步,但是心里一直耿耿于怀的是当时北邮复试被刷的事情,我虽然庆幸能在中传遇到我人生最重要的两位导师(黄老师、范老师),这两位老师从各个方面重新打造了我,让我现在能够一直在进步,但是我还是很不爽复试被刷以及上机考试竟然没有ac一道题。这一年半的时间,我不敢偷懒,php虽然是我主要的编程语言,但是对c的不能忘怀让我一直挂念那当时的北邮复...
ARM汇编程序---通过ARM汇编调用C语言函数实现累加

ARM汇编程序---通过ARM汇编调用C语言函数实现累加

在C语言中定义实现一个累加的函数,参数是累加的最大值,从1加到此值。下面是代码:汇编代码:其中注意开始的参数的定义要紧靠前面,负责无法读出,其中要将C语言函数导入:IMPORT+函数名,并将你定义的汇编开始部分定义出去:EXPORT+开始函数名STACK_TOP EQU 0x40002000 N EQU 100 PRESERVE8 AREA HOMEWORK,CODE,READONLY IMPORT add EXPORT START E...
ARM汇编程序---通过ARM汇编实现累加一个队列的所有元素

ARM汇编程序---通过ARM汇编实现累加一个队列的所有元素

具体思路:先定义一个队列用来存储数据,在实现中,通过移位操作可以获知队列的长度(移位操作相比除法更加快速),同时注意在队列的存储中是一个字存储一个数据,但是移位和后面累加的操作中,队列指针的指向地址每次加4还是加8主要看自己的机子是32位还是64位的机子。然后后面就是主要的实现部分了,大家应该都可以看懂。ARM代码如下:ARRAY_SIZE EQU 40 AREA HOMEWORK4,CODE,READWRITE ENTRY START MOV...
ARM汇编程序---通过LDMFD/STMFD实现R0-R6寄存器的数据的交换

ARM汇编程序---通过LDMFD/STMFD实现R0-R6寄存器的数据的交换

交换规则如下:具体思路:在此题中是不实用其他的寄存器从而解决问题,所以此时我们就可以将这些数据先通过LDMFD(过后增加)指令保存到堆栈里面,然后再通过LDMFD(过后增加)和STMFD来进行数据的交换。我再进行存储了数据以后又用了STMFD操作是因为经过是一个操作堆栈的指针已经指向了堆栈的最后,所以此时用STMFD操作可以将堆栈的指针指向堆栈的开始位置。然后载经过LDMFD操作实现寄存器的数据的交换。ARM代码: AREA HOMEWORK4,CODE...
ARM汇编程序---用ARM汇编实现R0寄存器中数据调换数据

ARM汇编程序---用ARM汇编实现R0寄存器中数据调换数据

具体思路:本题本人的思路很简单,就是通过以为操作来实现,注意此时不要使用循环移位,用算数移位和逻辑移位即可,每次移位保存其中一个16进制数,知道每个数都保存,然后再将这些数据反序存储到R0寄存器中。ARM代码: AREA HOMEWORK4,CODE,READONLY ENTRY START LDR R0,=0xAABBCCDD MOV R1,R0,LSR #28 MOV R2,R0,LSR #24 MOV R2,R2,LSL #28...
<< 1791 1792 1793 1794 1795 1796 1797 1798 1799 1800 >>