可能已經有人知道了,一直忘記放上來,算是提醒。
http://twemu.no-ip.org/apt/zhpy/
補過 patch 跟 manpage ,有任何建議請告知本人。
2008年3月5日 星期三
中華電信台東區對外國連線發生錯誤
凌晨 2:32 - 2:44
traceroute to www.blogspot.com (72.14.223.191), 30 hops max, 40 byte packets
3 tt-c6r1.router.hinet.net (168.95.176.162) 28.521 ms 28.738 ms 29.412 ms
4 tt-c12r1.router.hinet.net (211.22.229.1) 33.394 ms 33.564 ms 33.985 ms
5 kh-c12r11.router.hinet.net (220.128.24.66) 35.654 ms 36.146 ms 36.527 ms
6 kh-c12r31.router.hinet.net (220.128.24.117) 40.148 ms 68.710 ms 18.678 ms
7 * * *
8 * * *
traceroute to www.msn.com (207.68.183.120), 30 hops max, 40 byte packets
3 tt-c6r1.router.hinet.net (168.95.176.162) 16.953 ms 17.577 ms 18.166 ms
4 tt-c12r2.router.hinet.net (211.22.229.14) 18.504 ms 18.672 ms 19.081 ms
5 kh-c12r12.router.hinet.net (220.128.25.66) 21.322 ms 21.497 ms 21.909 ms
6 tn-st-c12r12.router.hinet.net (220.128.25.29) 27.578 ms 19.992 ms 20.462 ms
7 ty-fo-c12r12.router.hinet.net (220.128.9.6) 26.900 ms 27.149 ms *
8 ty-fo-c12r31.router.hinet.net (211.21.116.27) 23.391 ms 23.913 ms 24.996 ms
9 * * *
10 * * *
還好有備用線路,連基本的服務都不正常,整個無言。
2008年2月4日 星期一
2008年1月12日 星期六
如何使用 NASM 來學習組合語言
如何使用 NASM 來學習組合語言
1. 為何不使用 MASM 來學習?
因為 MASM 不具備跨平台的特性,僅能在 Intel
機器上執行,而且有商業性使用限制,寫出來的程式碼除非有買微軟的軟體和微軟簽約才能發佈,對於使用者是一個負擔。網路上有眾多版本,越新的版本功能越多,但對新手使用也越不方便,所以為何要去惹這個麻煩。最後你不能研究或拿到它的原始碼,因為他不提供競爭對手任何改進空間,對於以後要深入深究編譯器和系統結構,又是一層問題,因此在使用上能避免使用的話盡量避免。
2. 我已經用了 MASM ,怎樣轉換?
它們一樣使用 Intel 的語法,所以照常使用就可以了。但是假指令跟 Macro 部份要請仔細閱讀使用手冊,因為多少有點出入。
3. 如何安裝?
到 http://sourceforge.net/project/showfiles.php?group_id=6208
下載你所要的版本。
(a) Windows 98/XP 要下載 nasm-2.00-win32.zip ,抓下來解壓縮到 c:\nasm
執行就可以了。
(b) Linux 下使用套件管理程式,並尋找 nasm 。
4. 如何使用?
(a) Linux 下開啟終端機然後直接執行 nasm 指令。
(b) Windows 下請到 (開始)->(執行) 並鍵入 cmd 來進入終端機,然後至 c:\nasm
目錄使用程式。(如果 cmd 不會用的話,請去查指令)
5. 如何編輯檔案?
使用 Notepad 或是其他純文字編輯軟體
6. 寫出第一個 Hello World
(a) Linux
將檔案存入 a.asm (程式碼部份)
SECTION .DATA
hello: db 'Hello world!',10
helloLen: equ $-hello
SECTION .TEXT
GLOBAL _start
_start:
; Write 'Hello world!' to the screen
mov eax,4 ; 'write' system call
mov ebx,1 ; file descriptor 1 = screen
mov ecx,hello ; string to write
mov edx,helloLen ; length of string to write
int 80h ; call the kernel
; Terminate program
mov eax,1 ; 'exit' system call
mov ebx,0 ; exit with error code 0
int 80h ; call the kernel
然後執行 nasm -f elf -o a.o a.asm && ld a.o ,
將 a 加上可執行屬性,然後執行 ./a
(b) Windows
將檔案存入 a.asm (程式碼部份)
org 0100H
jmp _start
hello db 'Hello world!',13,10,'$' ; end at $
_start:
; Write 'Hello world!' to the screen
mov ah,9 ; write code 9 for print
mov dx,hello ; string to write
int 21h ; call the kernel
; Terminate program
mov ah,04ch ; 'exit' system call
int 21h ; call the kernel
然後在 c:\nasm\ 目錄下執行 nasm.exe a.asm -o a.com ,
a.com 檔就是執行檔。
7. 如何 Debug ?
(a) Windows 下建議使用 SoftICE 或 Debug (VS 內建的也可)。
(b) Linux 下建議使用 Nemiver 或 GNU Debugger。
8. 題外話:如何更上一層樓?
官方說法是「有恆心有毅力,總有一天會成功」,個人說法是「當書堆到整間臥室都是之後,把垃圾全部扔掉剩下來的就是了」,不負責任說法是「當你想偷開正妹視訊都懶得開的時候」。
1. 為何不使用 MASM 來學習?
因為 MASM 不具備跨平台的特性,僅能在 Intel
機器上執行,而且有商業性使用限制,寫出來的程式碼除非有買微軟的軟體和微軟簽約才能發佈,對於使用者是一個負擔。網路上有眾多版本,越新的版本功能越多,但對新手使用也越不方便,所以為何要去惹這個麻煩。最後你不能研究或拿到它的原始碼,因為他不提供競爭對手任何改進空間,對於以後要深入深究編譯器和系統結構,又是一層問題,因此在使用上能避免使用的話盡量避免。
2. 我已經用了 MASM ,怎樣轉換?
它們一樣使用 Intel 的語法,所以照常使用就可以了。但是假指令跟 Macro 部份要請仔細閱讀使用手冊,因為多少有點出入。
3. 如何安裝?
到 http://sourceforge.net/project/showfiles.php?group_id=6208
下載你所要的版本。
(a) Windows 98/XP 要下載 nasm-2.00-win32.zip ,抓下來解壓縮到 c:\nasm
執行就可以了。
(b) Linux 下使用套件管理程式,並尋找 nasm 。
4. 如何使用?
(a) Linux 下開啟終端機然後直接執行 nasm 指令。
(b) Windows 下請到 (開始)->(執行) 並鍵入 cmd 來進入終端機,然後至 c:\nasm
目錄使用程式。(如果 cmd 不會用的話,請去查指令)
5. 如何編輯檔案?
使用 Notepad 或是其他純文字編輯軟體
6. 寫出第一個 Hello World
(a) Linux
將檔案存入 a.asm (程式碼部份)
SECTION .DATA
hello: db 'Hello world!',10
helloLen: equ $-hello
SECTION .TEXT
GLOBAL _start
_start:
; Write 'Hello world!' to the screen
mov eax,4 ; 'write' system call
mov ebx,1 ; file descriptor 1 = screen
mov ecx,hello ; string to write
mov edx,helloLen ; length of string to write
int 80h ; call the kernel
; Terminate program
mov eax,1 ; 'exit' system call
mov ebx,0 ; exit with error code 0
int 80h ; call the kernel
然後執行 nasm -f elf -o a.o a.asm && ld a.o ,
將 a 加上可執行屬性,然後執行 ./a
(b) Windows
將檔案存入 a.asm (程式碼部份)
org 0100H
jmp _start
hello db 'Hello world!',13,10,'$' ; end at $
_start:
; Write 'Hello world!' to the screen
mov ah,9 ; write code 9 for print
mov dx,hello ; string to write
int 21h ; call the kernel
; Terminate program
mov ah,04ch ; 'exit' system call
int 21h ; call the kernel
然後在 c:\nasm\ 目錄下執行 nasm.exe a.asm -o a.com ,
a.com 檔就是執行檔。
7. 如何 Debug ?
(a) Windows 下建議使用 SoftICE 或 Debug (VS 內建的也可)。
(b) Linux 下建議使用 Nemiver 或 GNU Debugger。
8. 題外話:如何更上一層樓?
官方說法是「有恆心有毅力,總有一天會成功」,個人說法是「當書堆到整間臥室都是之後,把垃圾全部扔掉剩下來的就是了」,不負責任說法是「當你想偷開正妹視訊都懶得開的時候」。
訂閱:
文章 (Atom)