存档

2011年6月 的存档

80×86汇编基础(三)——基本语法

2011年6月26日 2 条评论

本文是继之前写过的两篇8086系列文章的第三篇,主要内容是对8086汇编的基本语法做一个总结与介绍。当前,在Windows平台上,用的大都是Intel的语法,而在Linux平台上,由于早期的GCC中用的是AT&T的语法,所以现在在Linux平台上,用的比较多的是AT&T的语法,Intel的语法在Linux平台上也有用,但是不常见。但是,总的来说,Intel和AT&T的汇编语法,都是目前比较常见的汇编语法,我们都有必要都进行了解一下,下面分别从几个方面通过对比,来介绍两种语法。

  • 1. 寄存器的命名
  • 1
    2
    
    AT&T: %eax, %ebx, %ecx, %edx
    Intel: eax, ebx, ecx, edx

    如上所示,AT&T的语法中,寄存器前面要加%号,而Intel的不用。 阅读全文…

    分类: 程序人生 标签: , , ,

    StackOverflow初体验

    2011年6月19日 6 条评论

    随着Quora类的问答社区的风生水起,各种各样的问答社区像雨后春笋一样,慢慢地露出了新芽。今天要介绍的也是一个问答类社区,一个与Quora类问答社区相比,完全不同的问答社区——StackOverflow(www.stackoverflow.com)。Quora类问答社区是面向大众的问答社区,用户在里面可以提各种各样的问题,等专业的人士来回答,得到满意的答案。而StackOverflow是一个面向细分市场的问答社区,它主要面向程序设计领域,StackOverflow自己的介绍是“Stack Overflow is a programming Q & A site that’s free. ”,很简洁,但定位很明确。StackOverflow是从2011发布的,目前alexa全球排名150名左右(Quora的alexa全球排名只有1000左右),每天的PV 1亿左右,算是做得很不错的了。最近抽时间体验了一个StackOverflow,这里做个简单的小结,把StackOverflow介绍给感兴趣的朋友。 阅读全文…

    年轻的心

    2011年6月16日 2 条评论

    窗外的夜,静悄悄的,douban.fm中正播着奶茶的《明年此时》,发现越来越喜欢豆瓣电台,也越来越享受一个人的日子。过去的半年,一直都忙忙碌碌,每天朝九晚九的日子,猛然地发现,渐渐地有点迷失了自己,或许到了该找回自己的时候了。心之所向,梦之所往,曾经的年轻的心,曾经年少的梦,是否依旧还是那样,还是那么坚定?Same time next year, everything is still the same as today?

    分类: 生活感悟 标签:

    在C/C++程序中打印当前函数调用栈

    2011年6月11日 没有评论

    前几天帮同事跟踪的一个程序莫名退出,没有core dump(当然ulimit是打开的)的问题。我们知道,正常情况下,如果程序因为某种异常条件退出的话,应该会产生core dump,而如果程序正常退出的话,应该是直接或者间接的调用了exit()相关的函数。基于这个事实,我想到了这样一个办法,在程序开始时,通过系统提供的atexit(),向系统注册一个回调函数,在程序调用exit()退出的时候,这个回调函数就会被调用,然后我们在回调函数中打印出当前的函数调用栈,由此便可以知道exit()是在哪里调用,从而上述问题便迎刃而解了。上述方法用来解决类似问题是非常行之有效的。在上面,我提到了在“回调函数中打印出当前的函数调用栈”,相信细心的朋友应该注意到这个了,本文的主要内容就是详细介绍,如何在程序中打印中当前的函数调用栈。
    我之前写过一篇题目为《介绍几个关于C/C++程序调试的函数》的文章,看到这里,请读者朋友先看一下前面这篇,因为本文是以前面这篇文章为基础的。我正是用了backtrace()和backtrace_symbols()这两个函数实现的,下面是一个简单的例子,通过这个例子我们来介绍具体的方法: 阅读全文…

    喜欢上了python了

    2011年6月8日 4 条评论

    最近,抽时间学习了一下python, 越来越发现自己并没有像以前想得那样排斥python, 而是慢慢的喜欢上了python。以前,一直对python通过缩进来区分代码块这个觉得很不爽,我想,这个也许是每个C/C++程序员刚开始接触python都会puzzle的地方,尤其在不同的编辑器中,配置的缩进不一样的时候,这个很让人头疼。
    很多时候,事情也许并不像我们刚开始想的那样,通过深入的去了解事情本身,我们可能会发现事情积极的另一面,学习python的过程让我深深的体会到了这一点。随着在工作中,python的身影越来越常见,静下心来深入学习一下python的欲望越来越强烈,最近终于可以抽出空来了。随着对python的不断深入,发现python是一种会让人觉得amazing的语言,下面我列举一些我所认为python做得比较好的地方,分享给正在犹豫要不要学习python的朋友:

  • 1. python鼓励大家写模块(module),写库(library)。然而python的每个库本身也是可以单独执行的。这个神奇的特性是python的__name__来支持的,我们在别人的python代码中经常会看到这样的一段代码: 阅读全文…
  • JSON学习小结

    2011年6月5日 4 条评论

    1. 什么是JSON?
    JSON的全称是JavaScript Object Notation, 是一种轻量级的数据交换格式。就像XML一样,JSON也是一种比较常见的数据交换的语言,或者称之为数据交换格式更为贴切。
    2. JSON中的数据结构有下面两种:
    (1)对象(Object): 一系列name/value对的集合
    (2)数组(Array): 一系列有序的values的列表
    3. JSON中基数的数据类型有下面几种:
    (1)对象(Object): 对象是一系列无序的“name/value”集合,如下图所示,对象以'{‘开始,以’}’结束,name和value之间由’:’分隔,多个name/value对之间由’,’分隔。
    阅读全文…