- 博客(26)
- 资源 (1)
- 收藏
- 关注
原创 实战吉里吉里2到吉里吉里Z移植
以上就是所有移植的内容了,里面很多知识和代码都是可以用于其他基于吉里吉里2引擎的游戏的,不仅限于VBA。希望能给所有想把吉里吉里2游戏移植到吉里吉里Z的人起到参考作用。再进一步,希望能提高全网吉里吉里Z移植的品质,降低移植不完整带来的遗憾。
2024-06-18 23:36:33
2571
1
原创 RGSSAD解密程序(基于RgssadUnpacker改进以支持RGSS3A)
近来玩小游戏需要解密Rgssad,发现网上已有人公开了Rgssad/Rgss2a的解密代码(RgssadUnpacker):http://blog.youkuaiyun.com/rgss2ad/archive/2011/02/16/6187475.aspx但我遇到的是Rgss3a,随手google一下可以看到如下算法描述(原出处不明):rmvx ace的加密包相对于XP加密并没有太大改进,无非是m
2014-01-23 11:38:19
17306
原创 在Lua 5.2中保护全局环境
Lua脚本语言十分强大,但是有一个问题就是全局可写,比如你定义一个全局变量很容易不小心被另一个同名变量给覆盖掉。这种问题一旦出现是十分难以调查的,该文章介绍的这种机制可以解决该问题。我已经在我自己的工程中应用了该技术,它可以达到以下目的:1.全局变量不能直接在Lua中被修改2.可以创建出不能直接被修改的table3.屏蔽一些你不想开放的Lua原生函数比如文件操作
2012-10-28 22:17:16
5139
原创 64位ubuntu下链接器的BUG
最近在维护一个多平台的库,其中有一个64位linux的版本,在维护中发现了一个奇怪的问题。假设该库的工程由一个静态库libS.a和一个动态库libD.so构成,其中libS.a引用了系统的libdl.so(使用了dlopen函数),而libD.so用到了libS.a(但没有直接使用dlopen)。由于libD.so使用了libS.a,因此在链接libD.so需要加上-lS,另外li
2012-10-17 15:48:50
1729
原创 stat.st_dev的陷阱
最近在写一个跨平台的文件操作类,其中有一项是获得某目录所在磁盘的剩余空间大小。在linux上我采用了如下实现:1. 使用stat(path, &st1)获得该目录的属性,其中的st1.st_dev为该目录所在设备(磁盘)的设备号2. 使用fp = setmntent(_PATH_MNTTAB) -> mnt = getmntent(fp) 枚举所有挂接点3. 使用stat(
2012-09-28 16:49:41
4585
1
原创 C语言中浮点型数转化为整型数的陷阱
最近做嵌入式项目,把一段老代码一直到智能手机平台之后发现了意想不到的bug。简单来说就是一个负的FLOAT强转为WORD型会变成0,比如FLOAT f = -1.0;WORD w = f;w会变成0,而不是期待的0xffff(65535)。于是我在PC上用devc++(win版g
2011-07-29 10:47:46
7312
翻译 [译] MoPaQ归档格式
MoPaQ归档格式© 2006-2010 Justin Olbrantz (Quantam) and Jean-Francois Roy (BahamutZERO). All Rights Reserved.在不修改本文的前提下对本文的散发和复制没有任何限制;但希望能够提供本文的链接以使每个人都能够看到最新的版本。在其他地方允许自由引用本文的内容,但请附上来源以及原作者。
2010-05-23 13:59:00
3041
1
原创 i386 ABI之寄存器保护规则
一、保护原则 首先要明白ABI(Application Binary Interface, 应用程序二进制接口)主要是一个针对编译器的限定,它用以保证不同的编译器编译出的二进制代码以及同一编译器编译出的不同文件的代码之间可以安全交互。所以,如果我们要用高级语言和汇编混合编程,这里有些约定就必须明确。 举个例子,大家都知道在C语言中,EAX
2010-01-05 22:00:00
4129
原创 键盘控制LED——S3C44B0X的IRQ编程
在《简单的S3C44B0X Bootloader》一文中我所描述的Bootloader没有任何异常处理,这显然是很不实用的,下面我将结合键盘控制LED的范例来在该Bootloader中实现对IRQ的处理。 首先明确一些基本信息。根据原理图,在我的板子里,1x4键盘的4个按键分别接S3C44B0X的EXTINT4~7这4个引脚,我们可以通过这些外部中断信号来处理按键的按下。对PGI
2008-07-03 14:33:00
2359
3
原创 基于S3C44B0X的128x64单色LCD编程控制
最近忙于辞职、搬家、打扫卫生、请客吃饭、找工作等杂事,少有机会能够静下心来学习一些东西。趁着投出去的简历还没有动静的这段时间,决定开始着手一早就想做的事情,那就是LCD的编程控制。 本来买的这块板子就带一块128x64的单色点阵LCD,不玩岂不可惜了。于是乎大概重温了一下之前做的东西(其实也就是看看自己的blog),翻出光盘上的资料,一头扎了进去。 功夫不负苦心人,也正好这段时
2008-06-30 13:26:00
5056
1
原创 简单的S3C44B0X Bootloader
上次基于u-boot写了一个跑马灯程序,见 《第一个跑马灯程序》 。但是这里有个问题,离了u-boot它就不能用了,因为缺少很多系统初始化工作,也没有人能把它加载到RAM中去运行。因此,为了学习(好强大的理由。。。),我们需要自己实现一个bootloader,来替代u-boot做这些事情。 显然让我在这么短的时间里写一个和u-boot同级别的bootloader
2008-04-29 13:31:00
9274
37
原创 说说ARM汇编的LDR伪指令
我们知道ARM CPU中有一条被广泛使用的指令LDR,它主要是用来从存储器(确切地说是地址空间)中装载数据到通用寄存器。但不论是ARMASM还是GNU ARM AS,都提供了一条与之同名的伪指令LDR,而在实际中使用该伪指令的情况也较多,那他们有什么不同呢?下面我谈谈我的理解。 由于我使用GNU工具链,所以以下的内容都以GNU AS的ARM语法为准。 LDR伪指令的语法形式如下
2008-04-27 17:20:00
31255
4
原创 第一个跑马灯程序
最近准备转行做嵌入式,随弄来一块S3C44B0X的板子,准备好好研究一下。 板子便宜货,没啥特别完善的资料,都是和网上差不多的ADS环境。 因为平时还要上班,花了几个晚上的时间,总算是把u-boot和uClinux的编译和下载过程弄熟了。这不,好不容易等来一个周末,决心一定要弄出点名堂来,不能再在门外徘徊了。 先说说工作环境。 主机(自己家的,研究Linux内核的
2008-04-20 02:00:00
14356
3
转载 [转]用GNU工具开发基于ARM的嵌入式系统
作 者: 摩托罗拉苏州技术中心 许庆丰摘 要: 介绍如何利用GNU的工具开发基于ARM的嵌入式系统,以及使用编译器、连接器和调试工具的具体方法,为广大嵌入式系统开发人员提供一种低成本的开发手段。关键词: ARM GNU MC928MX1 gcc gdb gdbserver 当前,ARM公司的32位RISC处理器,以其内核耗电少、成本低、功能强、特有16/32位双指令集,已成为移动通信
2008-04-18 22:26:00
2193
原创 ubuntu下编译busybox失败的一种解决方法
最近从澳门入手了部Motorola ROKR E6(OS内核是Linux的),就顺便研究了下该手机的交叉编译。 途中,编译busybox的时候遇到了怪异的错误: GEN .depend /home/xxx/busybox-1.1.3/include/bbconfigopts.h:28 hmm, unterminated make[1]: *** [.depen
2007-11-10 23:39:00
3551
原创 Linux源码中的mktime算法解析
Linux源码中的mktime算法解析 我们知道,从CMOS中读出来的系统时间并不是time_t类型,而是类似于struct tm那样,年月日时分秒是分开存储的。 那么,要把它转化为系统便于处理的time_t类型,就需要算法进行转换。 我们都知道我们的公历还是比较复杂的,有大月小月,有闰年非闰年,处理起来会很麻烦。 但是Linux的源代码仅仅用了短短的
2007-09-20 13:05:00
22082
8
原创 Linux内核中的可编程间隔定时器PIT
Linux内核中的可编程间隔定时器PIT(Programmable Interval Timer) 每个PC机中都有一个PIT,通过IRQ产生周期性的时钟中断信号来充当系统定时器。i386中使用的通常是Intel 8254 PIT芯片,它的I/O端口地址范围是40h~43h。 8254 PIT有3个计时通道,每个通道都有其不同的用途: 通道0用来负责更新系统时
2007-09-15 19:32:00
5245
转载 [转]Rich Text Format (RTF) 中文版规范,版本 1.6
来源: http://tb.blog.youkuaiyun.com/TrackBack.aspx?PostId=140197.chinese{ font-size:12pt; font-family:"宋体"; background-color: white;}p{ font-size:12pt; font-family:"宋体";}.english{ font-size:9pt; font-
2007-06-18 09:55:00
4813
原创 LDT淡出江湖?
如果你看过早期linux内核的代码,你可以发现里面每一个进程(任务)拥有一个tss段和一个ldt段描述 ,每个进程都使用自己的ldt中的代码段描述符和数据段描述符所表示的段作为进程自己的代码段和数据段。 但事实上这不是必需的。事实上linux到1.0的时候就已经放弃这种方法了。现在的linux使用gdt描述符表中的user code和user data两个段(可参见__USER_CS
2007-01-13 16:26:00
1427
1
原创 Linux内核bootsect.S的一个小BUG
读Linux 2.4.33.4的时候发现一个不怎么显眼的bug,位置/arch/i386/boot/bootsect.S,第271行,read_track子程序处:read_track: pusha pusha movw $0xe2e, %ax # loading... message 2e = . movw $7, %bx int $0x10 popa # Accessi
2007-01-03 16:45:00
1524
原创 BIOS关于获取内存信息的调用
OS开机获取当前计算机的内存信息是一件很重要的事情,因为分页机制要用到它。来看看Linux是怎么做的吧 。读了0.11内核的人应该注意到了,linus使用int 0x15 ah = 0x88中断调用获取扩展内存的大小,代码极其简洁: mov ah, 0x88int 0x15mov [2], ax 这个方法真得很简单,而且不用担心BIOS不支持(该调用从28
2006-12-28 14:08:00
5973
1
原创 想说说实模式的内存地址映射的问题
最近时间紧了,工作忙了,进度也降下来了……无奈 大学时期没有多做点事情真是遗憾闲话不说,进入正题。昨天用 nasm重写linux0.11的bootsect.s,又有了一些新的体会。看过赵博的书的人都知道,bootsect.s在BIOS加电后被载入0x07c00这个地方,然后它把自己复制到0x90000,把setup.s复制到0x90200(紧挨着0x90000的bootsect.s),同时
2006-12-27 19:57:00
4362
1
原创 用来生成二进制内核的Makefile样例
弄出了下面这个Makefile,在偶的Linux试了一切正常:Makefile AS = nasm # 使用nasm作为汇编器. -s 打印错误信息到标准输出.LD = ld # GNU的gld作为连接器.CC = gcc
2006-12-26 20:44:00
3166
1
原创 我的实验环境
做OS嘛,实验环境很重要这我也明白,但是我懒。相信勤快的人一定比我做得更好(向于前辈学习!!)。不过懒人也有懒招,我不会老老实实的跟着于前辈用DOS引导,用TD,自己写FAT12这种掉了牙的文件系统,以及自己剖析ELF目标文件(当然这个功夫还是要有,不然自己的OS怎么跑可执行文件阿)等等。 废话不多说,首先是WINDOWS下,偶(公司)的XP SP2中文(家里的索日文SP1 XD),“
2006-12-25 23:03:00
1810
原创 关于NASM
NASM可真是个好东西。俺以前特别菜的时候用过masm,主要是研究C语言参数调用协议的(ASM和C混合编程相关),什么高级用法都不会。不过masm的语法也够繁琐,不合胃口。传说中的gas我真的没用过 ,看了赵博的书上成篇的gas代码我就头痛,AT&T的汇编格式真的很别扭。首先源操作数和目的操作数和Intel汇编相反,这和我们通常的编程习惯相反。我举个例子,strcpy()函数,该函数第
2006-12-25 21:51:00
7053
原创 决定开始写blog了= =
今儿个圣诞节,不过和我没关系。最近翻了翻于渊前辈写的 《自己动手写操作系统》,感受颇深。一切都在于偶然。记得一年前,我还在为混得一张学位证而疲于奔命。那时候偶然撞见一本书,很有名的,赵炯博士写的《Linux内核完全注释》。当时兴冲冲的看了几天,发现基本看不懂= =。当时甚至不知道自己为什么看不懂,就是搞不清楚什么地方看不明白。现在回想起来那大概真是全都看不明白。。。Minix那
2006-12-25 21:19:00
1241
1
bin2s19源代码
2009-12-31
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人