HelloWorld

ASM,C,LUA,LINUX(gentoo)
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

2011年10月7日

摘要: 32bit 汇编函数调用参数传递是通过堆栈来实现的。 1 .section .data 2 output: 3 .asciz "The processor Vendor ID is %s\n" 4 .section .bss 5 .lcomm buffer,12 6 .section .text 7 .globl main 8 main: 9 movl $0,%eax10 cpuid11 movl $buffer, %edi12 movl %ebx, (%edi)13 movl %edx, 4(%edi)14 movl %ecx,... 阅读全文

posted @ 2011-10-07 17:58 光铭 阅读(4616) 评论(0) 推荐(0) 编辑

2011年10月6日

摘要: Steve Jobs Stanford Commencement Speech 2005 How to live before you dieThis is a prepared text of the Commencement address delivered by Steve Jobs, CEO of Apple Computer and of Pixar Animation Studios, on June 12, 2005.I am honored to be with you today at your commencement fro... 阅读全文

posted @ 2011-10-06 20:50 光铭 阅读(159) 评论(0) 推荐(0) 编辑

摘要: 换行(newline)另起一行, \n,ascill 0xa,英文line feed回车(return)回到行首, \r, ascii 0xd,英文carry return如果用过机械打字机,就知道回车和换行的区别了换行就是把滚筒卷一格,不改变竖直位置。 回车就是把水平位置复位,不卷动滚筒。我们平时的ENTER到底是回车还是换行?有一种说法是WINDOWS下面是\n\r, UNIX下面是\n, MAC下面是\r这个说法我可以证实,两个平台的汇编我都搞过,WIN下要\n\r,LINUX下只要\n就可以达到同样的效果只写\r就回到输出行的开头总之这个很恶心有的系统只要看到\n就换行回车有的看到\r 阅读全文

posted @ 2011-10-06 20:34 光铭 阅读(780) 评论(0) 推荐(0) 编辑

2011年10月5日

摘要: 语言的编译过程就是把高级语言转换成计算机能够理解的二进制机器指令的过程。这种转换会产生一些效率不是很高的代码。所以对一些效率要求高,或者对性能影响大的代码都会直接用低级的汇编语言来编写。汇编器是专门用来把低级汇编语言编译成机器码的二进制程序或者目标文件。基于每个体系设计的cpu都会有其对应的汇编语言,比如x86,armC语言的编译过程预处理->编译(得到.s)->汇编(得到.o)->链接 (得到二进制)每一个c源文件都会得到一个目标文件(.o),然后会把这些相关的目标文件链接成一个二进制文件。其实每一种高级语言都会被编译成汇编语言,最后得到二进制文件,所以了解汇编语言是很重要 阅读全文

posted @ 2011-10-05 00:22 光铭 阅读(617) 评论(0) 推荐(0) 编辑

2011年10月4日

摘要: enum变量是int类型的,因此在使用int类型的任何地方都可以使用它,比如可以作为数组的下标,可以作为switch的标签枚举类型的目的是提高程序的可读性。它的语法和结构相同,但是注意大括号中是逗号,用来分隔常量列表,不是分号,因为结构要声明结构成员的类型,是声明语句,而枚举里面的常量都是int类型的,只需给出常量列表就行了。意思和联合有点像,一个枚举变量,同一时刻只能取一个枚举列表的值。(和联合完全不一样了。。。扯来联想比较一下把)enum spectrum{ red, orange, yellow, green, blue, violet }; //specturm为标记名,因此可以把en 阅读全文

posted @ 2011-10-04 17:14 光铭 阅读(340) 评论(0) 推荐(0) 编辑

摘要: 逗号运算符用于将两个或两个以上的表达式连接起来。例如a=1, b=a-4, c=a+2;等价于以下三个有序语句a = 1;b = a-4;c = a+2;逗号表达式的值为最后一个表达式的值和类型。但在求值时,按从左到右的顺序分别计算个表达式的值。逗号运算符是c语言中所有运算符中级别最低的运算符,其结合性为左结合性。在c语言中并不是任何地方出现的逗号都是逗号运算符。例如在变量列表中用于分隔两个变量。一个声明指定一种基本变量类型,后面所带的变量表可以包含一个或多个该类型的变量,同时在声明时可以初始化。int *lower, upper,step=10;相当于int *lower;int upppe 阅读全文

posted @ 2011-10-04 16:10 光铭 阅读(497) 评论(0) 推荐(0) 编辑

2011年10月1日

摘要: 0.递归的思想 阅读全文

posted @ 2011-10-01 21:34 光铭 阅读(150) 评论(0) 推荐(0) 编辑

摘要: 0.条件编译语句#if不能使用sizeof,因为预处理器不对类型名进行分析。但预处理器并不计算#define语句的表达式。因此才#difine语句中使用sizeof是正确的。1.typedef 和#define首先,#define是预处理,语句后面不需要分号其次,注意下面两个区别#define string_d char *typedef char * string_t;string_d s1,s2;string_t s3,s4; s1,s3,s4都被声明为char *,而s2被声明为char。所以用于处理指针时,最好使用typedef。2.typedef struct { char... 阅读全文

posted @ 2011-10-01 20:54 光铭 阅读(802) 评论(0) 推荐(0) 编辑

摘要: 与其每次查表不如把平时常用的总结下来0. ( ) [ ] ++ 的优先级都高于*1.在所有运算符中下面四个运算符的优先级别最高. -> ( ) [ ] 阅读全文

posted @ 2011-10-01 20:50 光铭 阅读(134) 评论(0) 推荐(0) 编辑

摘要: 00.结构标记,结构成员,普通变量可以采用相同的名称,他们不会冲突。01.结构的合法操作只有几种:作为一个整体复制和赋值,通过&运算符取地址访问其成员。其中,复制和赋值包括向函数传递参数和从函数返回值。结构之间不能比较。02.有结构数组03.结构声明可以嵌套,但是不能递归,一个包含自身实例的结构是非法的。但是可以包括指向自身的指针。04.结构是一种普通类型,结构名不再是地址,只有数组名和函数名是地址。05.结构的大小#include<stdio.h>int main(void){ struct pt{ double x; char y; }; printf("%l 阅读全文

posted @ 2011-10-01 20:46 光铭 阅读(142) 评论(0) 推荐(0) 编辑