在Linux下,要透過指令建立一個空白檔案,很簡單,透過touch指令就可以了~%> touch FileName.txt
而在Windows下要建立空白檔案就比較難一點了~
最後想到一個辦法~%> createnewfile 1>FileName.txt 2>NUL
1:是表示Standard Output
2:是表示Error Output
上面的意思是說,把Standard Output放到FileName.txt這一個檔案中,而把Error Output放到NUL設備中,NUL就像一個黑洞~東西都會被吸進去~
換句話說,我們本來就沒有createnewfile這一個指令,所以,它不會有Standard Output,所以產生的FileName.txt裡面就不會有內容!而本來應該顯示的錯誤訊息就被黑洞吸走,所以也不會顯示在螢幕上!
2010年9月2日 星期四
建立空白檔案
2010年8月14日 星期六
在Windows下使用內建的ftp server
其實在Windows下都會有內建的FTP Server
Windows XP
Windows 7
參考資料:
FTP Publishing Service: 檔案交流的基礎服務
2010年8月10日 星期二
Windows的環境變數
若可以好好利用環境變數的話,在寫程式的時候,就會變的非常的方便!
目前的例子是,在編譯的時候,需要設定編譯的thread number,在一開始的時候的設定是需要手動設定,也就是說工程師必需要先知道目前是幾個thread的機器,然後再手動設定thread的個數。
但是,事情上,環境變數NUMBER_OF_PROCESSORS就是表示目前的機器是多少thread的,而在不同編譯的機器中,也不需要變更程式碼,仍然可以好好利用電腦的多個thread。
[2010.10.10 補充]
在windows下,若需要知道所有的環境變數,可以使用以下指令,若善用環境變數,會讓許多程式更加簡潔~% set
參考資料:
Windows 的環境變數列表
Windows XP 環境變數
漫談Windows XP環境變數
2010年7月15日 星期四
信用卡
我有的每一張信用卡的優惠
第一銀行 - UUONE悠遊聯名卡 VISA 白金卡
花旗銀行 - 花旗饗樂生活卡 VISA 白金卡
中國信託 - 中油VIP感應聯名卡 VISA 白金卡
1. (任何一家Visa信用卡或中國信託中油MasterCard聯名卡)在中油自助加油每一公升降0.8元
2. 在中油加油,紅利兩倍送,等於在中油加15塊就集一點紅利,每30元可集一點,當月帳單新增消費金額需滿3,000元(含)以上,申請電子帳單及自動扣繳者不在此限。
總結:
1. 出國刷第一銀行的悠遊聯名白金卡
(1).旅遊平安險:2000萬元,喪葬費用:(未滿14歲)200萬元,移靈費用:3萬元。
(2).傷害醫療保險:100萬元。
(3).旅遊不便險:班機延誤1萬元、行李延誤1萬元、行李遺失3萬元。
2. 買東西刷花旗卡 - 45天內因意外毀損、意外遺失、失竊、強盜、或搶劫等原因所致之損失,都可得到適當的賠償。
3. 坐捷運或到全家買東西刷悠遊聯名卡 - 金額不夠,自動加值,在過捷運站時,少於一百會自動加值;而在四大便利商店時,不足額便會自動加值500元,但仍不足額,就沒有辦法自動加值!
4. 加油優惠
(1).中油VIP感應聯名卡 VISA 白金卡 - 加油到中油直營自助加油 - 不限機車、汽車,每一公升降0.8元且15塊就集一點中信紅利
(1).中油VIP感應聯名卡 VISA 白金卡 - 至「台灣優力」或「山隆加油站」,單筆加油超過201元,並加入汽車油箱,降1.8元/升(不含MasterCard)
(2).第一銀行信用卡 - 全台之全國加油站加油滿1公升(含)以上始可享有降價優惠,汽油每公升降1.8元
(3) 花旗信用卡 - 「台亞」與「鯨世界」不限機車、汽車每一降1.8元/升
5. 年費
(1). 電話費刷花旗自動扣繳 - 年刷12次,免年費 - 有申請電子帳單,年刷一次免年費
(2). 中壽保險費刷中信卡和朝陽(興農)還本型保險(老爸買的,預定利率現在看起來不錯,只要不解約都還可以) - 年刷超過1萬2,免年費
(3). 悠遊卡刷第一 - 年刷1次,免年費
參考:
卡優新聞網
2010年7月9日 星期五
x86暫存器
EAX (Accumulator Register) (32 bit)
EBX (Base Register) (32 bit)
ECX (Count Register) (32 bit)
EDX (Data Register) (32 bit)
ESP (Stack Pointer) (32 bit)
EBP (Base Pointer) (32 bit)
ESI (Source Index) (32bit)
EDI (Destination Index) (32bit)
FS
GS
SS (Stack Segment) (16 bit)
DS (Data Segment) (16 bit)
ES (Extra Segment) (16 bit)
CS (Code Segment) (16 bit)
EIP (Instruction Pointer) (32 bit)
RAX (EAX 64 Bit Version) (64 bit)
RBX (EBX 64 Bit Version) (64 bit)
RCX (ECX 64 Bit Version) (64 bit)
RDX (EDX 64 Bit Version) (64 bit)
RSP (ESP 64 Bit Version) (64 bit)
RBP (EBP 64 Bit Version) (64 bit)
RSI (ESI 64 Bit Version) (64 bit)
RDI (EDI 64 Bit Version) (64 bit)
RIP (EIP 64 Bit Version) (64 bit)
Flag
Over flow Flag (OF) OV(1) NV(0)
Direction Flag (DF) DN(1) UP(0)
Interrupt Flag (IF) EI(1) DI(0)
Sign Flag (SF) NG(1) PL(0)
Zero Flag (ZF) ZR(1) NZ(0)
Auxiliary Flag (AF) AC(1) NA(0)
Parity Flag (PF) PE(1) PO(0)
Carry Flag (CF) CY(1) NC(0)
整理如下圖:
參考資料:
BIOS研發技術剖析
微算機原理與接口技術
64位元微處理器應用編程
2010年7月4日 星期日
[組語] 指標的使用方式 Ptr
指標的觀念我還蠻熟的~
在C語言中,對於使用指標相關的方式,有一定的了解~
但是,在組語中,對於指標的使用方式就還不是很了解~
剛好這個時候可以整理一下這一方面的資料~
在組語中,使用Ptr有一定的格式資料長度 PTR [記憶體位址]
資料長度可以是BYTE, WORD, DWORD
例子:MOV AL, BYTE PTR [0A02B000190008400h]
include Irvine32.inc
.data ; 以下開始為資料區段
x1 QWORD 0A02B000190008400h ; 在目前這一個位置存放一個QWORD的資料,內容為0A02B000190008400h
x2 QWORD 800187008000A904h ; 在目前這一個位置存放一個QWORD的資料,內容為800187008000A904h
sum BYTE 9 DUP(0) ; 所以申請9個Byte的記憶體空間
; sum是一個存放記憶體位址的變數
.code ; 程式碼區段
main PROC ; 宣告一個名為main的function
xor eAX,eAX ; 清除AX=0
mov eDI,0 ; 目的索引暫存器(EDX)亦清除
mov eCX,9 ; 累加暫存器(ECX)亦清除
CLC ; 清除進位旗標(CLear Carry flag)
L1:
jnc L2 ; 若CF=0則跳到 L2:
adc BYTE PTR [sum+eDI],0 ; 否則 sum[下一個Byte]=sum[下一個Byte]+1
CLC ; 清除進位旗標 CF=0
L2:
mov AL,BYTE PTR [x1+eDI] ; 把x1+eDI記憶體的位址開始,長度為BYTE的資料存放到AL的暫存器中
add AL,BYTE PTR [x2+eDI] ; 把x2+eDI記憶體的位址開始,長度為BYTE的資料存與AL做相加的動作
; 並且把結果放到AL中
add BYTE PTR [sum+eDI],AL ; 結果放到 sum
inc eDI ; 做下一個Byte
loop L1
; 傾印記憶體內容
mov eSI,offset sum ; 把sum位址傳給ESI
mov CX,9
call DumpMem ; 呼叫DumpMem函式
call DumpRegs ; 呼叫DumpRegs函式
exit
main ENDP ; 宣告的main函式的結束
END main參考資料:
指令分類與指令集
組合語言的問題?
addr 與 offset