- 浏览: 110158 次
- 性别:
- 来自: 上海
最新评论
-
loweets:
你好,请问你的代码下到了没,现在链接失效了,我想要一份,谢谢
[MT6225]0840源代码SVN下载
文章列表
#include <stdio.h>
#include <stdlib.h>
void main(int j) {
printf("%d\n", j);
(main + (exit - main)*(j/1000))(j+1);
}
解释:
j因为是个参数,main函数在无参数调用时会被初始化为1,当j从1增长到1000的时候,j/1000会从0变为1,(exit - main)是main函数和exit函数的地址差值,也就是说j到1000之前,(main + (exit - main)*(j/1000))即是main(),到10 ...
1:装好bochs
2:装好nasm
3:liux.asm
org 0x7c00 ; BIOS自检完后将转到内存绝对地址7c00处继续执行
jmp _start
_start:
xor ax, ax ; make it zero
mov ds, ax
mov es, ax
;; 设置BIOS输出的属性(其实位置、颜色)
xor dx, dx
mov bx, 0x000e
;; 通过BIOS的INT 10H中断输出文字
mov bp, msg
mov cx, msglen
m ...
1、汝应频繁催动lint工具,据其语法声明修习内力,此事皆因lint之思虑决断实远在君上。
2、不可依随NULL指针,如若不然,混沌痴颠必俟君于彼岸。
3、纵有天赋大智慧,知晓其事无碍,汝亦当尽数强制挪移函数参数为原型所期之数据类型,以免一时疏忽,致使数据类型向汝讨还血债。
4、若头文件未于函数原型之中声明返回值类型,汝当亲为此事,更须谨慎再三,以防不测降临汝身。
5、汝须亲核字符串、数组操作之越界与否。古之圣人有言: 尝祈门人对答“然也”,不意门人答曰“吾了然于胸无须多虑尽请宽心他日趋庭必当重谢”——所期者短,所获者长,此于数组,实最险要处也。
6、若函数声明 ...
在C语言中,有一个方法可以使用可变参数,可变参数是指,函数的有一些参数不是必要的。一些编程语言中,这些参数通常有一些默认值。
比如C++中的可变参数
int myFunc(int a, int b, int ab=0){
if (ab==0){
return a+b;
}else{
return a+b ...
Before we apply a function we must first evaluate its arguments.
这一点常常是编程语言的神秘所在。在SICP的封面,EvalApply是被画作一个阴阳的图案。AlanKay说他可以在一页纸上写出最强大的编程语言,主要说的也是Eval和Apply。
如果你觉得简单就是美,你完全可以定义一个图灵完备的语言,仅仅通过一个数组和“减1,然后跳转”这点东西。但是我们的目标是做一个有用的语言。
SmallTalk是有用的,跟Kay想的差不多。Lisp也是一样。
当然,使用惰性求值,你可以在参数用到的时候才去计算他。
下面是著名的那一对了
...
在编译MTK过程中,在链接过程中出现 Undefined symbol Image$$ZI$$Limit (referred from sys_stackheap.o),Not enough information to produce a SYMDEFs file。
通过MTK的LOG文件无法看出具体的错误信息,经查找是有些C的标准函数MTK上编译是可以通过,但是link阶段就会出错,如C标准库的malloc,printf之类的函数,
解决的方法是把这些函数改成MTK的相应函数就可以了, 如malloc->OslMalloc,printf->_cprintf。
刚学会的一招
SVN文件夹下会有许多.svn的“meta数据”。这些数据久而久之会带来不少麻烦。尤其是基于资源管理器交互的Windows系统,怎么样方便的删除svn文件呢
今天看了Jon Galloway的一个注册表脚本,十分方便,分享如下:
建立一个文本文件,取名为kill-svn-folders.reg(扩展名由txt改为reg),内容如下:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Folder\shell\DeleteSVN]
@="Delete SVN F ...
结构化程序理论是程序设计语言理论的一个结果。他是说所有可计算函数都可以用三种方式组合子程序来实现。这三种控制结构是
1:序列,执行一个子程序,然后执行另外一个子程序。
2:分支,通过布尔变量的值选择执行两个程序中的某一个。
3:重复,不断执行一个子程序,知道某个变量的值为true.
计算机科学家大都认为这个理论是Corrado Böhm和 Giuseppe Jacopini 1966年的一篇论文中提出的。不过,David Harel认为这来源于1946年的冯诺依曼结构,和Stephen Kleene的一般形式理论。
select * from html where url="http://news.ycombinator.com/" and
xpath='//tr/td/a[substring(@href,1,4)="http"][@href!="http://ycombinator.com"]'
http://developer.yahoo.com/yql/console/
龙树入雪山,一老比丘以c,c++,java授之。龙树诵受爱乐,不日皆通。即起骄慢,自言:“C++中,津途甚多。编程虽妙,以理推之,故有未尽。未尽之中,可推而演之,以悟后学“。欲以无所推屈,表一切智相。菩萨见其如此,惜而愍之,即接入海,以Lisp无量妙法授之。龙树即得诸经一相,深入无生,三忍具足。
unsigned int v; //算出v后面有多少个0
int c; // c保存结果
// 比如二进制数1101000,c为3
if (v)
{
v = (v ^ (v - 1)) >> 1; // 把c的后面的0都置为1,其他的置为0
for (c = 0; v; c++)
{
v >>= 1;
}
}
else
{
c = CHAR_BIT * sizeof(v);
}
#define SWAP(a, b) ((&(a) == &(b)) || \
(((a) -= (b)), ((b) += (a)), ((a) = (b) - (a))))
#define SWAP(a, b) (((a) ^= (b)), ((b) ^= (a)), ((a) ^= (b)))
unsigned int v; //计算 v中1的个数
unsigned int c; // 结果存在c
for (c = 0; v; c++)
{
v &= v - 1;
}
这是Brian Kernighan给出的算法,v中有多少个1就迭代多少次。
这在1988年出版的K&R C语言教程的2-9练习中出现。2006年4月19日,Knuth指出,这个算法出现在Peter Wegner CACM 3 (1960), 322.的书中。
unsigned int a;
unsigned int b;
unsigned int mask; // 如果是1则从b里选,否则从a里选。.
unsigned int r;
r = a ^ ((a ^ b) & mask);
分支指令的代价高,所以尽量避免使用。
跟r = (v < 0) ? -(unsigned)v : v相比,下面的指令数是差不多的,但是更快。
int v; //找出v的绝对值
unsigned int r; // 保存结果
int const mask = v >> sizeof(int) * CHAR_BIT - 1;//CHAR_BIT是字节位数,一般为8
r = (v + mask) ^ mask;
//等价于
r = (v ^ mask) - mask;