搜索此博客

显示标签为“小技巧”的博文。显示所有博文
显示标签为“小技巧”的博文。显示所有博文

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.

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年5月14日星期五

导出Thunderbird邮件到Outlook


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

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

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

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

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


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

2009年11月6日星期五

Auto Highslide插件

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

对Auto Highslide做了些修改:

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

  • Highslide JS替换为官方gallery版。


很喜欢Highslide效果,漂亮。

2009年7月14日星期二

用 split 命令分割文件

今天看了个syslog,40M的gz,用vim愣是打不开。俺的内存是1G的啊。用gzip解开,640多MB。网上若干同仁(估计是互相抄的)都说用dd,1次只能拆一段,而且还得自己算偏移量。正常的方法应该用split命令。manpage我就不抄了,写几个例子。

  • split -l 10000 bigfile
  • split -b 10M bigfile
  • zcat bigfile.gz | splite -a 3 -d - BIG

文件名后面的是前缀,-a是后缀,-d表示序号按数字排,默认是字母。-l是按行数分割,-b是按字节数。

2009年5月1日星期五

Excel VBA写UTF-8文件

客户给的多语言式样是Excel的,最终要做成mo。mo是po编译出来的,po是UTF-8文本。
Private Sub WriteOut(str As String, strPath As String)
Dim objStream As Object

Set objStream = CreateObject("ADODB.Stream")
With objStream
.Type = 2 'adTypeText
.Charset = "UTF-8"
.Open

.WriteText str
.SaveToFile strPath, 2 'adSaveCreateOverWrite
End With

Set objStream = Nothing
End Sub

以上内容抄于网上,那个“ADODB.Stream”是什么我不是很清楚。我用“Set objStream = new ADODB.Stream”不好使。

2009年4月24日星期五

Vim修改括号内文字的“ci(”

这些命令能以很简单的修改被括号之类的东西包装起来的文字。

  • ci(、ci[、ci{、ci<:修改各种括号内的内容(相当于“f(”再“l”再“ct)”)。
  • ci"、ci'、ci`:修改各种引号内的能容。
  • cit:修改HTML/XML tag 内的内容。

Powered by ScribeFire.

2009年4月21日星期二

把谷歌拼音伪装成日文输入法

人在日本,很让人郁闷的一件东西就是独特的日文键盘布局。习惯了英文键盘的人一开始总是找不到各种符号的键位。等到熟悉了,更郁闷的事情出现了——中文输入法还是按英文键盘布局的,找不到中文标点!Windows这一点很白痴,输入法和键盘是绑定的,键盘又和语言绑定。就是说你装个中文输入法,那就必须使用中文(US English Keyboard)。Linux就没有这个问题!

没办法,Windows还是得用。刚刚就找到一个方法,把谷歌拼音伪装成日文输入法。使用日本键盘布局,并且系统显示是日文输入法。使用时用Ctrl+Shift切输入法(原来是要用Alt+Shift的,切语言)。

具体方法:
  • 打开注册表编辑器。
  • 主键[HKEY_CLASSES_ROOT\CLSID\{4966A555-1B67-45c0-B82F-627FD19AAD22}]值为"谷歌拼音输入法 2.0",修改为"谷歌拼音输入法 2.0 - 日本語キーボード"。
  • 主键[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\CTF\TIP\{4966A555-1B67-45C0-B82F-627FD19AAD22}\LanguageProfilex00000804\{9EE1D8A6-6C8F-4104-BB8E-5563319247A8}]的Description值为"谷歌拼音输入法 2.0",修改为"谷歌拼音输入法 2.0 - 日本語キーボード"。SubstituteLayout值为"0x####0804",修改为"0x####0411"。804表示中文,411表示日文。这里的"####"要记住,下面的步骤要用。
  • 主键[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Keyboard Layouts\####0804]的Layout File值为"KBDUS.DLL",改为"KBDJPN.DLL"。Layout Text值为"谷歌拼音输入法 2.0",修改为"谷歌拼音输入法 2.0 - 日本語キーボード"。主键名改为"####0411"。
  • 主键[HKEY_CURRENT_USER\Keyboard Layout\Preload]中值为"####0804"的项目,改为"####0411"。
  • 重启,OK啦。

ControlSet001那里我不是很清楚,有时候还有002、003出现。我实际是搜索的"####0804",有的全改了。

2008年7月16日星期三

Vim的2html脚本

用Vim直接转HTML,很方便。

:runtime! syntax/2html.vim

Windows版要把“/”反过来写成“\”。

2008年7月11日星期五

用Cscope帮助Vim浏览代码


  1. 建立cscope.out的脚本makecs.sh,makecs.sh 。

  2. #/bin/bash

    TEMPLATE=cscope.XXXXXX

    if [ -n "$1" ]; then
    cd "$1";

    TEMP_FILE=$(mktemp "$TEMPLATE")
    find -regex '.*\.\([ch]\|[ch][px][px]\|pgc\)' | grep -v '.svn' > "$TEMP_FILE"
    cscope -b -i "$TEMP_FILE"

    rm "$TEMP_FILE"
    else
    echo "makecs <dir>"
    exit 1
    fi

  3. Cscope插件

  4. autoload_cscope,放在./vim/plugin/或者/usr/share/vim/vim70/plugin/。我下的是0.3,78行的“find c”改成了“find s”,在175、176行加入了*.pgc。
  5. 用法

  6. C-] = 查定义

    C-\, s = 查引用

    C-\, c = 查调用