04 2016 档案
摘要:程序的入口是main,在main里调用汇编的函数。 首先要解决怎么定义函数的问题 在C语言中,要extern 一个函数声明即可,然后这个函数在汇编里面实现。 在汇编里面,用EXPORT 把C语言定义的函数名引进来,再开始编写函数名开始的段 例子是一个六个数相加的函数。 C语言: 汇编代码: 其实关键
阅读全文
摘要:本程序用keil5实现。 keil4会将C程序的地址设为0x00000000,即一开始就运行C程序了,参数都还没设置好。这个错误我也没深究,因为我自己装的是keil5. 首先需要在汇编代码中给C程序指定参数。如果函数需要4个及4个以下的参数的话,那么把我们需要的参数分别赋值在R0~R3这4个寄存器中
阅读全文
摘要:消息队列是可以实现没有共同关系的进程之间的通信。Socket则可以实现不同计算机的不同进程之间的通信。 几个重要的函数: 服务器接收来自客户的信息: 客户发送信息: 客户端代码: 服务端代码:
阅读全文
摘要:消息队列可以实现两个没有关系的进程之间的通信。 创建了一个消息队列后,进程可以往里面放消息,也可以取消息。因为这个消息队列是有名字的,所以就算是两个没有关系的进程,也能通信。 而且人性化的一点是,可以自己定义消息的结构体。 几个重要的函数: 效果图: Server的代码:(用于取消息) Client
阅读全文
摘要:管道是进程间通信的一种工具。 1、管道是半双工的,建立管道后,只能由一个进程向另一个进程传数据。 2、管道只能在有公共祖先的两个进程之间使用。父进程建立管道后,fork,这个管道就能在父子进程之间调用了。 管道通过pipe函数创建。 pipe(int fd[2]); 要打开两个文件,文件描述符放在f
阅读全文
摘要:读写锁是一个可以分写状态和读状态的锁,可以分别加上写状态或读状态的锁。在读模式的锁下,所有试图以读模式获得它进行加锁的线程都可以获得锁,所有希望以写模式获得它的都会被阻塞。在写模式下,读写锁都被阻塞。读写锁又成共享互斥锁。 简单的说,读模式的加锁下,所有进程都可以获得读锁,但都不能获得写锁。 在写模
阅读全文
摘要:条件变量用于线程之间的通信,和互斥锁一起使用。条件变量用于及时通知等待的线程条件的变化,使线程不至于错过变化。 考虑下面的情况,有AB两个线程对index这个全局变量进行++,一个线程C用于判断,index是不是3的倍数,如果是就输出除以3的结果。 根据时间片轮转的算法,线程应该是这样执行的。 In
阅读全文
摘要:网上找了很久都没看见有人说,真是奇怪,然后自己试了一下。 Google:UTF-8 谷歌把中文参数转换成了UTF-8,用java自带的库可以直接转换。 FireFox:GBK 火狐把中文参数转换成了GBK,用java自带的库也能转换。
阅读全文
摘要:GET的html: POST的html: POST其实是水的,因为看书里面获取上传的文件内容那段代码太长了,不想写。。就直接数了一下前面报文有多少字,直接从那后面开始读了。
阅读全文
摘要:AREA Example,CODE,READONLY ENTRY CODE32 ;S 后缀:更新标志位CPSR ;!后缀:基址寄存器中的地址发生变化 ;LDR 从存储器中加载数据到寄存器 ;STR 从寄存器中加载数据到存储器 ;立即寻址 MOV R0 ,#2 SUBS R0,R0,#2 ;寄存器寻址
阅读全文
摘要:#include #include #include #include #include #include #include //文件锁,buffer锁,empty和full信号量 sem_t file_mutex,buf_mutex,empty,full; int offset = 0; char buffer[256]; void producer(int i)...
阅读全文
摘要:每次获得一个筷子,会引起死锁的。 解决的办法是,每次尝试去获取所需的两个筷子。第一次获取左边的,第二次获取右边的。 只有当两个都获取到了,才吃东西。否则就要释放所有获得的筷子。 这样就能避免死锁了。
阅读全文
摘要:这个代码,创建了两个线程,分别输出100个A和100个B,但是输出结果很奇怪。 都是BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA。 也就是说先完
阅读全文
摘要:#include #include #include #include sem_t sem1,sem2; void func1(char * string){ int i = 0; while(i<100){ sem_wait(&sem1); printf("%s\n",string); i++; ...
阅读全文
摘要:#include #include void func(char* string){ printf("%s\n",string); } int main(){ pthread_t pid; pthread_create(&pid,NULL,(void*)func,"Hello World!"); pthread_join(pi...
阅读全文
摘要:新建C文件,新建一个文件用touch,新建文件夹用mkdir。 打开文本编辑器,编辑C文件,命令用gedit xxx.C 编写C程序,Ctrl+S保存 编译运行 1、gcc命令是编译 -o是可选项 是对生成的文件命名。 2、gcc编译过后就能看见多出了一个hello.out文件, 如果不用-o,就默
阅读全文
摘要:经常要用到统计数据这个功能,要直观的显示出来,最好还是用图表。自己弄也麻烦,所以用了Github上的一个非常著名的开源图标库:MpChart。 使用前去网上找它俩的jar包,然后导入就行。资源比较好找,分别是mpchartlib.jar和nineoldandroids-xxx.jar。 效果图: 布
阅读全文
摘要:图灵机器人的调用其实就是你给服务器发一个文字消息过去,他回你一个,看起来模仿人类对话一样。 不知道为什么要弄个SDK这么麻烦的方法,以前的接口官网上已经没有了,但是还是可以用的。返回的是JSON但也懒得解析是了,反正格式是固定的,当成字符串处理就好,简单粗暴。 以上代码直接复制粘贴就能用了。也没什么
阅读全文
摘要:Axure RP是一个专业的快速原型设计工具。 在上面可以直接设计软件的原型而且不涉及代码,例如设计软件的流程和界面之类的。简单的说,就是可以在上面编写界面,让人看起来像一个完整的软件一样。 设置完成后,可以导出html文件。打开主界面的html文件,即可演示了。很方便。 可以设置点击事件等等。 其
阅读全文
摘要:C语言直观,汇编效率高,C里面嵌入汇编是很好的选择。 路径大概如图: mian.c是我的C语言程序,Func.s是汇编程序。 主要是Init_1这个函数的实现在汇编文件里面,使用汇编实现的。 首先在C里面用 extern 声明 Init_1这个函数,再在main里面调用好了。 然后在汇编里面用EXP
阅读全文
摘要:新建项目 >新建文件夹 >把新建的项目放在自己的文件夹中 >选择开发板 >添加开发板的驱动文件 >main函数 项目分组基本如图,S3C2440.S就是2440板子的裸板驱动,里面帮我们初始化了很多东西,没有它,我们就不能往里面写程序了。 当然,裸板驱动也可以自己写,以后再说。 其次是程序从main
阅读全文
摘要:汇编其实没有想象中的那么难! 我们用高级语言时,定义变量,循环语句,判断语句等等句子,我们就不想知道它在汇编是怎么实现的吗? 汇编其实就是对我们板子中寄存器的操作,所以汇编提供了一堆指令,我这里就不展开了,只列举一下会用到的几个。 ADD 增加 ADD R1 #1 表示R1寄存器加一 MOV 传值
阅读全文

浙公网安备 33010602011771号