coreBugZJ

此 blog 已弃。

ProgrammingLanguage

JNI Java调用C代码
     摘要: 环境 Ubuntu12.04 + openJDK6。
JNI中使用“修改的UTF8”编码,而Linux下wchar_t使用UTF32,注意转码。  阅读全文

posted @ 2014-04-13 19:36 coreBugZJ 阅读(624) | 评论 (0)  编辑

汇编调用 C 语言 printf %f 输出浮点数 float 的问题:4字节 还是 8字节
     摘要: 结论: C 语言的 printf 使用 %f 来输出 float 时,实际上先把 4字节的float转化为 8字节的double,然后访问了栈上的 8字节数据。
(环境:Ubuntu12.04 32位 intel i3 nasm gcc)  阅读全文

posted @ 2013-04-29 16:51 coreBugZJ 阅读(3141) | 评论 (2)  编辑

Linux 下 Java 调用 shell 命令 nasm 与 gcc
     摘要: 最近在写Pascal编译器,生成 nasm 汇编代码,需要调用 nasm 进行汇编,再调用 gcc 与 C 语言标准库链接,从而可以使用 C 语言的库函数。

注意 "-o" 和 fileName 要分开为两个字符串,不然的话,nasm 没问题,但 gcc 会出错,链接器找不到输出文件。

errReader 和 errInfo 用于输出 nasm 和 gcc 输出的错误信息。  阅读全文

posted @ 2013-04-29 15:28 coreBugZJ 阅读(832) | 评论 (0)  编辑

马虎浏览完一遍 SICP ,设计一个玩具Lisp方言,用C++实现一个玩具解释器,勿笑 版本 2.0
     摘要: 主要增加了图形和事件驱动,以及其它一些特性。。。  阅读全文

posted @ 2012-06-01 16:33 coreBugZJ 阅读(1898) | 评论 (0)  编辑

马虎浏览完一遍 SICP ,设计一个玩具Lisp方言,用C++实现一个玩具解释器,勿笑
     摘要: 看归看了,但习题没做,学习效果打了折扣。。。  阅读全文

posted @ 2012-04-20 16:19 coreBugZJ 阅读(2012) | 评论 (2)  编辑

为什么我们要学习Haskell这样的编程语言 (转)
     摘要: 最近的几个月,我一直在学习一种叫Haskell的编程语言。由于里面有太多的从未遇到的编程概念,整个过程就像是完全重新学习如何编程。在i.TV网站上,我写了很多JavaScript(node.js和前端代码)。虽然有不少的函数式/haskell式的编程模式不能引用进来,但仍有大量的技术思想让我在使用javascript编程语言时受益不少。

你会发现Haskell库里有能够处理各种事情的各种各样的函数。起初我以为这些只是一种技术上的积累,但随后我认识到,这些函数相比起其它语言里的函数,它们能应用到形式更广泛的问题中。这使得它们更有价值,因为我们都不太喜欢对一些常见的问题还不得不自己去写解决方案。。。  阅读全文

posted @ 2012-04-12 16:41 coreBugZJ 阅读(401) | 评论 (0)  编辑

你的编程语言能这样做吗 (转)
     摘要: 一日,你查看你的程序代码,你有两大块代码看起来几乎完全的一样。事实上它们就是完全一样,除了一个代码里说的是“Spaghetti(意大利面条)”,另一个代码里说的是“Chocolate Moose(巧克力慕丝)”。。。  阅读全文

posted @ 2012-04-12 16:30 coreBugZJ 阅读(2175) | 评论 (5)  编辑

JVM详解之Java垃圾回收机制详解和调优 (转)
     摘要: gc即垃圾收集机制是指jvm用于释放那些不再使用的对象所占用的内存。java语言并不要求jvm有gc,也没有规定gc如何工作。不过常用的jvm都有gc,而且大多数gc都使用类似的算法管理内存和执行收集操作。
  在充分理解了垃圾收集算法和执行过程后,才能有效的优化它的性能。有些垃圾收集专用于特殊的应用程序。比如,实时应用程序主要是为了避免垃圾收集中断,而大多数OLTP应用程序则注重整体效率。理解了应用程序的工作负荷和jvm支持的垃圾收集算法,便可以进行优化配置垃圾收集器。
  垃圾收集的目的在于清除不再使用的对象。gc通过确定对象是否被活动对象引用来确定是否收集该对象。gc首先要判断该对象是否是时候可以收集。。。  阅读全文

posted @ 2012-04-01 18:36 coreBugZJ 阅读(411) | 评论 (0)  编辑

Java 理论与实践: 垃圾收集简史 (转)
     摘要: Java 语言可能是使用最广泛的依赖于垃圾收集的编程语言,但是它并不是第一个。垃圾收集已经成为了包括 Lisp、Smalltalk、Eiffel、Haskell、ML、Scheme和 Modula-3 在内的许多编程语言的一个集成部分,并且从 20 世纪 60 年代早期就开始使用了。在 Java 理论与实践的本篇文章中,Brian Goetz 描述了垃圾收集最常用的技术。在以后的几个月,他将分析 1.4 JVM 所使用的垃圾收集策略、不同垃圾收集策略对性能的影响和如何才能(以及如何 不能)帮助垃圾收集器取得更好的性能。。。  阅读全文

posted @ 2012-04-01 18:27 coreBugZJ 阅读(333) | 评论 (0)  编辑

嵌入式上机之三,汇编与C语言相互调用
     摘要: .
1.1 编写一个汇编程序mixop.s
– 实现函数 y=mixop(x1,x2,x3)
– y=x1+x2*x3
– 调用c2.c中的multiply函数
1.2 C程序1:c1.c
– 实现函数 void init();
– 作为启动时的起始地址
– 在该函数内要调用mixop函数完成6+40*50,结果存放在变量y中。
1.3 C程序2:c2.c
– 实现函数y=multiply(x1,x2)
– y=x1*x2 。。。  阅读全文

posted @ 2012-03-18 22:55 coreBugZJ 阅读(393) | 评论 (0)  编辑

解释器,树遍历解释器,基于栈与基于寄存器,大杂烩 (转)
     摘要: 解析器是parser,而解释器是interpreter。两者不是同一样东西,不应该混用。
前者是编译器/解释器的重要组成部分,也可以用在IDE之类的地方;其主要作用是进行语法分析,提取出句子的结构。广义来说输入一般是程序的源码,输出一般是语法树(syntax tree,也叫parse tree等)或抽象语法树(abstract syntax tree,AST)。进一步剥开来,广义的解析器里一般会有扫描器(scanner,也叫tokenizer或者lexical analyzer,词法分析器),以及狭义的解析器(parser,也叫syntax analyzer,语法分析器)。扫描器的输入一般是文本,经过词法分析,输出是将文本切割为单词的流。狭义的解析器输入是单词的流,经过语法分析,输出是语法树或者精简过的AST。
(在一些编译器/解释器中,解析也可能与后续的语义分析、代码生成或解释执行等步骤融合在一起,不一定真的会构造出完整的语法树。但概念上说解析器就是用来抽取句子结构用的,而语法树就是表示句子结构的方式。。。  阅读全文

posted @ 2012-03-17 15:52 coreBugZJ 阅读(2823) | 评论 (0)  编辑

垃圾回收与弱引用 (转)
     摘要: 在一个允许在堆上动态分配内存空间并且采取隐式内存释放的程序设计语言里,如何确保内存的正确释放不再是程序员的关注点,而由运行时环境来提供支持。无法被程序引用的在堆上已分配的内存空间成为垃圾(无用内存单元)。。。  阅读全文

posted @ 2012-03-17 15:26 coreBugZJ 阅读(625) | 评论 (0)  编辑

对动静态语言的语义思考,再兼谈点其它的 (转)
     摘要: 重点探讨一下动静态编程语言的语义,兼带些DSL及通用语言,以及新手上手难易问题。。。  阅读全文

posted @ 2012-03-17 14:00 coreBugZJ 阅读(383) | 评论 (0)  编辑

scheme中文编程 (转)
     摘要: 有人提到如果 if 这样的关键字都可以定义成中文,那就是真正的中文编程。那时我就想到,这个其实要在 scheme 中实现是多么简单,将 sicp 书中的解释器稍微修改下就可以了,只要修改解析的部分即可。解释器的完整代码放后面。。。  阅读全文

posted @ 2012-03-17 13:30 coreBugZJ 阅读(1785) | 评论 (1)  编辑

C 语言 qsort 排序 字符串数组
     摘要: qsort 其实不认识数据类型的。。。  阅读全文

posted @ 2011-10-27 23:08 coreBugZJ 阅读(847) | 评论 (0)  编辑

I64 拆开为 高32位为I32,低32位为U32
     摘要: 冒昧求指教:

I64 拆开为 高32位为I32,低32位为U32,怎么拆?
反过来,怎么组装?  阅读全文

posted @ 2011-10-26 23:51 coreBugZJ 阅读(2315) | 评论 (6)  编辑

C++11 中值得关注的几大变化(详解) (转)
     摘要: 源文章来自前C++标准委员会的。。。  阅读全文

posted @ 2011-10-21 23:12 coreBugZJ 阅读(364) | 评论 (0)  编辑

画板 Java实现
     摘要: 也是刚刚从邮箱里发现的古董。。。  阅读全文

posted @ 2011-06-09 20:03 coreBugZJ 阅读(2718) | 评论 (0)  编辑

计算器 Java实现
     摘要: 偶然从邮箱里发现的古董。。。  阅读全文

posted @ 2011-06-09 20:00 coreBugZJ 阅读(1583) | 评论 (1)  编辑