Hackpads are smart collaborative documents. .

Kevin C Lin

866 days ago
Unfiled. Edited by Tse-jen Chen , Kevin C Lin 866 days ago
給定一個 5 bit 的數值,最少需要幾次猜測,就可知道正確答案?(每次猜完之後會知道猜大,猜小或是猜中。)
 
864 days ago
Unfiled. Edited by Kevin C Lin 864 days ago
Kevin L
  • 全部六種情形 5+5+10+10+1+1 =32
Kevin L
  • 32種組合
  • 這樣看來的結果也就是5次
 
866 days ago
Unfiled. Edited by Wen Lin Hung , 王信凱 , Kevin C Lin 866 days ago
  • 嵌入式系統不是把程式碼作空間最佳化,或者調整演算法,而該著眼整體產業態勢的轉變。
 
 
Jim H
  • 注意事項
  • 第一到第四週都有指定的作業,請務必在次周上課前完成,在「課程回顧與重點提示」時段會檢討和討論,如果您沒完成,那也不用來上課了,因為進度會跟不上
  • 這也是為何課程開在週一,因為學員有充分的複習和練習機會,也有完整的週末可以寫作業
  • 若自律都做不到,那真的不用學習嵌入式系統,畢竟這是工程人員最基本的素養
  • 學員報名時已要求整理心得和提問在 (各自的) Hackpad 上,請在課程進行過程中所遇到的問題紀錄進去,工作人員和講師會從中回覆,並斟酌調整授課方向。換言之,Hackpad 是很重要的互動機制,請配合
  • 每週都有指定的「預習教材」,請在次周上課前充分閱讀並紀錄過程中的疑惑於 Hackpad
 
Wen H Jserv前言
  • C語言有哪些 Operators ? 優先順序?
Category Operator Associativity
Postfix () [] -> . ++ - -   Left to right
Unary + - ! ~ ++ - - (type)* & sizeof Right to left
Multiplicative   * / % Left to right
Additive   + - Left to right
Shift   << >> Left to right
Relational   < <= > >= Left to right
Equality   == != Left to right
Bitwise AND & Left to right
Bitwise XOR ^ Left to right
Bitwise OR | Left to right
Logical AND && Left to right
Logical OR || Left to right
Conditional ?: Right to left
Assignment = += -= *= /= %=>>= <<= &= ^= |= Right to left
Comma , Left to right
  • 三角函數積分?
  • 工作
  • 35歲以下可以去矽谷、中國大陸發展
Wen H
  • 這是CMU的一個大咖教授寫的報告
Jim H
  • 波音 787 客機電力控制系統在 248 天電力沒中斷的狀況下,會自動關機,為此 FAA (美國聯邦航空管理局) 告知應每 120 天重開機 (重開機治百病的美國版?)
  • 飛行控制系統和軟體工程 + 編譯器的關聯
  • 248 days * 24 hours/day * 60 minute/hour * 60 seconds/minute = 21,427,200
  • 0x7FFFFFFF (32-bit 有號數最大值) = 2147483647 / (24*60*60) = 24855 / 100 = 248.55 days.
Wen H
  • 這是 Interger overflow 的問題
  • Prof. Koopman 把所有數據量化、把軟體行為定義出來
 
Jie-Han C
  • C 語言裡面有沒有例外處理?
Wen H
  • 例外處理:try catch
  • 透過stack處理,並用setjmp, longjmp
Wen H
  • 用Linux man page去看
  • 看相關名詞,NOTES
Jie-Han C
  • longjmp
 
德華 艾
  • 加不加 void 代表的意思?
  • 印象中在執行函數時,在 f( ) 當中放入的矩陣或參數,是跟作業系統執行的過程有關,待查證。
Wen H
  • 要加入void代表沒有代入參數,後來才定義的那麼嚴格
 
  • 這篇不一定是對的,如果a代入function,a叫作?
Kevin L
  • 等我找一下c99的定義了用code解釋可能好一點C99 Standard
  • void foo(int i, float f)
  • {
  •     ;do something
  • }
  • void bar()
  • {
  •     int testint=1;
  •     foo(testint,2.0);
  • }
  • i , f  parameter
  • testint , 2.0 argument
  • 可以解釋成def時的function 代表要傳入的東東是parameters
  • 真的使用時傳入的是arguments
 
  • 為什麼初始化很花時間?
Wen H
  • gcc -S 可以把 C編譯成 .s 組合語言
Kevin L
  • 這裡補一句用gcc如果是做cross compile直接調用gcc是產生本身機器的asm(應該是沒有記錯)
Wen H
  • 然後可以藉以知道初始化再幹嘛
 
Jim H
  • 編譯器運作原理
  • 為什麼你該理解編譯器的原理
Wen H
Wen H
  • Stack overflow, toyota 追撞問題就是這個問題, 位元反轉
Jim H
  • MISRA C (Motor Industry Software Reliability Association)
Wen H
  • p 3. 最重要的圖
  • main
  • CRT跳進去讓 main執行
  • CRT要管理 setjmp, longjmp
  • p 4.  $man execve
  • 載入,把原本的process換掉,原本的程式就不用跑了
  • 執行執行檔,要fork + execve 
  • p 19. 編譯器龍書,建議不要看中文
Wen H
  • 前面第一章不用看,看下面有講的,把這幾張喵一下
Jim H
  • Lexical analysis
  • Regular expression, NFA (Nondeterministic finite automata)
  • NFA -> DFA
  • lexer
  • Syntax analysis
  • context-free grammer, syntax tree and ambiguity, operator precedence, predictive parsing
  • LL(1) parsing: recursive descent
Wen H
  • LL(k)
Jim H
  • SLR parsing
  • LR-parser generator
  • Scopes & Symbol Tables
  • Interpretation
  • Type checking
  • Code generation: register allocation
Wen H
  • p 33. Gimple
...
867 days ago
Unfiled. Edited by Kevin C Lin 867 days ago
Kevin L
  • 不會,是compiler自己選了這個值,但我想提高warning level應該會看到undefined value gcc -Wall 應該會看到warning
Ye-Yong-Zhi
  • 所以並非能跑出什麼數值,而是Compiler執行a值的內容應為undefined嗎?
Kevin L
  • 有了有了 -Wall 全關 waring
  • $ gcc -Wall -o test1 test1.c
  • $ test1.c: In function ‘foo’:
  • $ test1.c:5:3: warning: operation on ‘a’ may be undefined [-Wsequence-point]
  •   a=a++;
  •    ^
  • $ test1.c: In function ‘main’:
  • $ test1.c:11:1: warning: control reaches end of non-void function [-Wreturn-type]
  •  }
  •  ^
  •  
 
864 days ago
Unfiled. Edited by Kevin C Lin 864 days ago
Jim H
  • 為了 PHI function 以及 virtual register (RISC-like)
Kevin L
  • 倒一下ASM,等下午再來看
  • atonkevin@localhost ~/arm-lecture/example5 $ arm-linux-gnueabihf-objdump -d example5.o
  • example5.o:     file format elf32-littlearm
  • Disassembly of section .text:
  • 00000000 <main>:
  •    0:   e92d4800        push    {fp, lr}
  •    4:   e28db004        add     fp, sp, #4
  •    8:   e24dd010        sub     sp, sp, #16
  •    c:   e3a03008        mov     r3, #8
  •   10:   e50b3008        str     r3, [fp, #-8]
  •   14:   e3a03009        mov     r3, #9
  •   18:   e50b300c        str     r3, [fp, #-12]
  •   1c:   e10f3000        mrs     r3, CPSR
  •   20:   e50b3010        str     r3, [fp, #-16]
  •   24:   e51b2008        ldr     r2, [fp, #-8]
  •   28:   e51b300c        ldr     r3, [fp, #-12]
  •   2c:   e0233002        eor     r3, r3, r2
  •   30:   e3530000        cmp     r3, #0
  •   34:   da000004        ble     4c <main+0x4c>
  •   38:   e51b0008        ldr     r0, [fp, #-8]
  •   3c:   e51b100c        ldr     r1, [fp, #-12]
  •   40:   ebfffffe        bl      ac <add>
  •   44:   e1a03000        mov     r3, r0
  •   48:   ea000003        b       5c <main+0x5c>
  •   4c:   e51b000c        ldr     r0, [fp, #-12]
  •   50:   e51b1008        ldr     r1, [fp, #-8]
  •   54:   ebfffffe        bl      dc <subtract>
  •   58:   e1a03000        mov     r3, r0
  •   5c:   e50b3014        str     r3, [fp, #-20]  ; 0xffffffec
  •   60:   e59f0038        ldr     r0, [pc, #56]   ; a0 <main+0xa0>
  •   64:   e51b1014        ldr     r1, [fp, #-20]  ; 0xffffffec
  •   68:   ebfffffe        bl      0 <printf>
  •   6c:   e59f0030        ldr     r0, [pc, #48]   ; a4 <main+0xa4>
  •   70:   e51b1010        ldr     r1, [fp, #-16]
  •   74:   ebfffffe        bl      0 <printf>
  •   78:   e10f3000        mrs     r3, CPSR
  •   7c:   e50b3010        str     r3, [fp, #-16]
  •   80:   e59f0020        ldr     r0, [pc, #32]   ; a8 <main+0xa8>
  •   84:   e51b1010        ldr     r1, [fp, #-16]
  •   88:   ebfffffe        bl      0 <printf>
  •   8c:   e3a03000        mov     r3, #0
  •   90:   e1a00003        mov     r0, r3
  •   94:   e24bd004        sub     sp, fp, #4
  •   98:   e8bd4800        pop     {fp, lr}
  •   9c:   e12fff1e        bx      lr
  •   a0:   00000000        .word   0x00000000
  •   a4:   00000010        .word   0x00000010
  •   a8:   00000030        .word   0x00000030
  •  
  • 000000ac <add>:
  •   ac:   e52db004        push    {fp}            ; (str fp, [sp, #-4]!)
  •   b0:   e28db000        add     fp, sp, #0
  •   b4:   e24dd00c        sub     sp, sp, #12
  •   b8:   e50b0008        str     r0, [fp, #-8]
  •   bc:   e50b100c        str     r1, [fp, #-12]
  •   c0:   e51b2008        ldr     r2, [fp, #-8]
  •   c4:   e51b300c        ldr     r3, [fp, #-12]
  •   c8:   e0823003        add     r3, r2, r3
  •   cc:   e1a00003        mov     r0, r3
  •   d0:   e24bd000        sub     sp, fp, #0
  •   d4:   e49db004        pop     {fp}            ; (ldr fp, [sp], #4)
  •   d8:   e12fff1e        bx      lr
  •  
  • 000000dc <subtract>:
  •   dc:   e52db004        push    {fp}            ; (str fp, [sp, #-4]!)
  •   e0:   e28db000        add     fp, sp, #0
  •   e4:   e24dd00c        sub     sp, sp, #12
  •   e8:   e50b0008        str     r0, [fp, #-8]
  •   ec:   e50b100c        str     r1, [fp, #-12]
  •   f0:   e51b2008        ldr     r2, [fp, #-8]
  •   f4:   e51b300c        ldr     r3, [fp, #-12]
  •   f8:   e0633002        rsb     r3, r3, r2
  •   fc:   e1a00003        mov     r0, r3
  •  100:   e24bd000        sub     sp, fp, #0
  •  104:   e49db004        pop     {fp}            ; (ldr fp, [sp], #4)
  •  108:   e12fff1e        bx      lr
  •  
 
867 days ago
Unfiled. Edited by Jim Huang 867 days ago
  • 在 8 月 9 日前安裝好 Linux,並且依據 Lab 38 描述,設定好 GNU Toolchain, QEMU, ARM 開發環境
Jim H
 

Contact Support



Please check out our How-to Guide and FAQ first to see if your question is already answered! :)

If you have a feature request, please add it to this pad. Thanks!


Log in