2013年4月29日 星期一

英文文法 -- 名詞

可數名詞

英文稱為: Countable Noun
字典標 : [C]

  • 單數
    • 一般狀況
      • a dog
    • 一般遇到母音開頭,使用 an
      • an apple
  • 複數
    • 一般狀況
      • dogs
    • 單字字尾是  X, S, CH, SH
      • box > boxes
      • bus > buses
      • watch > watches
      • dish > dishes
    • 單字字尾是 O
      • 可能是 s or es
      • hero > heroes
      • zoo > zoos
    • 單字字尾是 F/FE
      • 可能是直接加 S
        • roof > roofs
      • 可能去掉F 然後加 VSE
        • leaf > leaves
        • wife > wives

不可數名詞

英文稱為: Uncountable Noun
字典標 : [U]
  • a piece of paper.
  • two pieces of paper
  • one cup of coffee
  • two cups of coffee

2013年4月24日 星期三

Assembly格式

Assembly 格式

在assembly寫法上面主要有兩種格式
  • AT&T
  • Intel
主要有下列幾種差異

Source & Destination

從 register A(eax) --> register B(ebx)
  • AT&T :  mov  %eax, %ebx
  • Intel    :   mov ebx, eax

暫存器命名:

  • AT&T: 暫存器名稱前要加 % 符號
  • Intel: 不用加

立即值

  • AT&T:  立即值前面要加 $ 符號
    • mov  $1, %ebx
  • Intel: 不用加
    • mov ebx, 1

間接定址

  • AT&T: 用小括號 "("  ")"
  • Intel: 用中括號 "[" "}"

GCC使用的是AT&T的語法

2013年4月2日 星期二

C Language - Const

Const

const 意味著固定不變的意思。所以當變數設定為const時,此一變數的值是不允許被變更的,換句話說這個值會在初始的時候便決定。

Example


int main(int argc, char **argv)
{
    const int a = 10;
    
    a = 11; // compiler will return an error message

    return 0;
}

Usage

一般使用可能會和pointer一起使用,在判讀上面會有困擾,底下列出幾個比較常出現的寫法。
  1. const int a;
    • a 是int type而且是const
  2. const int *p;
    • pointer p 指向一個const int value 
  3. int const *p;
    • pointer p是const
  4. int * const p;
    • pointer p 指向一個const int value
  5. const int * const p
    • pointer p 指向一個const int value; 而且pointer p是const
以筆者的經驗來說,case 2和case 3比較容易搞混。以case 2來說,我會解讀成const修飾int *p,而*p是代表pointer p指向的記憶體內容。而case 3,我會解讀成const修飾 p這個pointer。
一點心得,有錯歡迎指正。

2013年4月1日 星期一

C語言 -- Volatile

Volatile

volatile按照字面上的意思就是短暫的,容易改變的意思。
這個關鍵字的用法在embedded system上面是具有相當的意義在裡面,算是開發者必備的。



Example:

333.    int *p = REGISTER_005_ADDRESS;
334.    int b, c;
335.    
336.    ...
342.    b =*p;
343.    ...
345.    c = *p;
346.    ...

一般來說 register的值可能一直在變動著,當如同上例般的宣告,compiler的optimization功能可能會把第342行和第345行變成 b = c = *p 這樣子的意思,如此一來就可能違背程式一開始的意思,BUG因此產生。

所以應該改宣告為  volatile int *p = REGISTER_005_ADDRESS;


Conclusion

程式設計者必須要很清楚每個變數取得的用法,而且了解compiler對一般最佳化可能採取的作法為何,並做出適當的宣告。

英文文法 -- 過去完成式

過去完成式

主詞 + had + 過去分詞(Past Participle)

用來表示在過去的某個時間點已經完成的事件。

Example:
  • Tom had already finished his homework when Mom came home.

營業毛利率

營業毛利率

每一塊錢的營收貢獻多少比例的獲利。與一般毛利率最大差別是在於,營業毛利率除了考慮生產的成本,還要加上取得收益之中所有該付出的成本。
( 營業收入 - 一切營業成本 ) / 營業收入 * 100%