系統程式 -- RSS

Test20130315

by ccckmitccckmit 15 Mar 2013 07:00

[[code]]
0 LD R1, A
1 ST R5, B
2 ADD R2, R1, R5
3 RET
4 A: WORD 3
5 B: WORD 5

6 XOR R1, R2, R6
7 SHL R1, 10
8 LOOP: MOV R3, R1
9 CMP R3, R5
10 JGT LOOP
11 RET
12 C: WORD 37
13 D: BYTE 25

極小的運算式編譯器(有生成 CPU0 組合語言)

by ccckmitccckmit 30 May 2012 06:28

[[code]]
D:\ccc\sp>gcc ecompiler.c -o ecompiler

極小的運算式編譯器

by ccckmitccckmit 23 May 2012 08:22

[[code]]
D:\ccc101\CL>gcc ecompiler.c -o ecompiler

剖析器家庭作業

by ccckmitccckmit 16 May 2012 07:50

請模仿以下網頁中的程式,做出可以剖析下列新語法的剖析器

極小的運算式剖析器

by ccckmitccckmit 16 May 2012 06:55

[[code]]
D:\ccc\sp>gcc eparse.c -o eparse

Css

by ccckmitccckmit 02 Apr 2012 00:19

AS0 組譯與手動組譯對照

by ccckmitccckmit 21 Mar 2012 07:21

[[code]]
AS0 組譯結果 手動組譯結果
0000 LD R1, SUM 001F0028 001F0028
0004 LD R2, I 002F0024 002F0020
// 錯誤 1,因為 I (0028) - (0004+4) = 0028-0008 = 0020,忘了將 0004 + 4 了,因為 PC 已經進到下一個指令了
0008 LDI R3, 10 0830000A 0830000A
000C LDI R4, 1 08400001 08400001
0010 FOR: CMP R2, R3 10230000 10230000
0014 JGT EXIT 2300000C 2300000C
0018 ADD R1, R2, R1 13121000 13121000
001C ADD R2, R4, R2 13242000 13242000
0020 JMP FOR 26FFFFEC 26FFFFEC
0024 EXIT: RET 2C000000 2C000000
0028 I: RESW 1 00000001 00000000
// 錯誤 2,原因是 RESW 1 是保留一個位元組,不是將初值設定為 1
002C SUM: WORD 0 00000000 00000000

家庭作業 -- 組譯範例

by ccckmitccckmit 14 Mar 2012 08:23

位址    組合語言        機器碼(絕對)     機器碼 (相對)
0000    LD R1, b        00 1    0 0020 | 00 1 F 001C
0004    LD R2, c        00 2    0 0024 | 00 2 F 001C
0008    LD R3, d        00 3    0 0028 | 00 3 F 001C
000C    ADD R4, R1, R2    13 4 1 2 000
0010    SUB R5, R4, R3    14 5 4 3 000
0014    ST R5, a        01 5    0 001C | 00 5 F 0004
0018    RET                2C 000000
001C a:    RESW 1          00000000
0020 b:    WORD 5            00000005
0024 c:    WORD 31            0000001F
0028 d:    WORD 6            00000006

系統程式 -- 教學錄影

by ccckmitccckmit 22 Feb 2012 09:14

  1. 課堂錄影:系統程式:(第一章) 系統軟體 — http://youtu.be/lq0LkZBcxSg

本書使用者

by ccckmitccckmit 10 Sep 2011 11:51

  1. 中華大學/吳弘翔老師/99年開設課程資料 — http://people.chu.edu.tw/~hsiang/thit/991/2/991class_b.html

#

Makefile 的語法、撰寫與使用方式

by ccckmitccckmit 16 May 2011 02:10

通常我們編譯程式時有很多算是每個人都有的共同習慣,例如我就是把 foo.c 編成foo.o。像這樣的編譯習慣,gnu make有一些內定規則來編譯, 也就是有的target你不寫,make也可以根據內定規則把他編譯出來。不用 對每個不同的.o寫不同的規則, 如果有個程式由foo.c foo1.c foo2.c……寫這些就寫得會發瘋了,例如

系統程式 -- RSS

by ccckmitccckmit 25 Feb 2011 07:27

問題與回答 -- 關於讀者 Mr.K 的第五封來信

by ccckmitccckmit 24 Jan 2011 09:10

On Thu, 20 Jan 2011 22:59:48 +0800, Mr.K wrote

再次打擾

請問
P5-5
5.2的標題"目的檔"
"目的檔"在我的認知裡是src code被編譯或組譯後產生的.o或.obj檔
那麼P5-3範例5.1 由於未使用到外部函式或變數 是否可以很單純的將產生的.o或.obj檔放到mem後就能執行?無須

關於 Mr.K 的第四封來信

by ccckmitccckmit 14 Jan 2011 04:09

On Thu, 13 Jan 2011 23:32:25 +0800, Mr.K wrote

陳老師您好:
請問
P3-14
範例 3.13 看不太懂所要表達的意思
似乎也沒此用到X陣列 感覺不出修正後版本使用PC相對位址的好處

關於讀者 Mr.K 的第三封來信

by ccckmitccckmit 10 Jan 2011 05:52

> "真正"配置變數記憶體位址的時候 我覺得是在runtime時(程式載入記憶體後) 而不是編譯後產生的o或連結後的執行檔 不曉得這觀念正確嗎?
> 像int a;沒設初值會RESB 1,那要是整個程式裡都沒使用a,這樣是否就浪費實體記憶體某段4bytes空間?
>
> 如果struct st{
> inta;
> intb;
> };
> struct st s;
> 這樣s有無佔記憶體空間?
>

s 會佔記憶體空間,如果 s 是全域或 static 變數,會放在 .bss 段,如果是函數中的區域變數,則會被放入堆疊段。如果有一些初始值,則這些初始值會被放在 .sdata 段 (靜態資料段).

關於 Mr.K 的第二封來信

by ccckmitccckmit 09 Jan 2011 06:47

On Fri, 7 Jan 2011 00:26:16 +0800, Mr.K wrote

User & <wt.ude.uqn|ccc#wt.ude.uqn|ccc> 於 2011年1月6日下午1:32 寫道:

關於讀者 Mr.K 的第一封來信

by ccckmitccckmit 09 Jan 2011 06:46

陳老師您好:
我想要了解並學習整個系統內部程式從src編譯連結到執行到底是怎麼做的
軟體到底如何載入到硬體執行 滿有興趣
所以買了您的系統程式書來學
恰好連結到您的網站
覺得您網站提供不少不錯的學習資源

想請問
http://sp1.wikidot.com/
左頁框選11.嵌入式系統後 補充教材的
投影片:EmbeddedBasics.ppt - 嵌入式系統基礎
投影片:EmbeddedAdvance.ppt - 嵌入式系統進階
已經無法連結下載
是否可以再提供下載做為參考?
以及能推薦做為練習不錯用的ARM開發版嗎?

系統程式一書第12章
看起來只能在電腦上OS裡寫個app模擬CPU去讀指令跟解析該做什麼事
後來在網站上看到如何設計一顆簡易的 CPU (使用 VHDL)
有在想 自己有空的話設計一個CPU0的HDL 以及直接使用像Xilinx或Altera開發板上的SRAM當程式儲存的地方 並結合系統程式書內所做的編譯器寫程式編譯燒進去執行
這樣就能更實際的從頭到尾都摸透
這樣可行嗎?可以給點建議嗎?我想只要加Bus的設計 再來就是 軟體怎麼放到SRAM上 還有要怎麼把執行畫面顯示在Console 因為不是用FPGA廠商提供的軟體IDE 可能要使用UART輸出來看結果

另外看了一些書 一直搞不太懂高階語言的宣告是用來指明變數的特性,那編譯後就會以型別配置資料所需要的記憶體位址空間嗎?
例:int a;沒給值,那是否已經配置好a變數的記憶體位址?
還是說int a=10;或int a;a=10;後,編譯器才會配置好a變數的記憶體位址?
宣告跟定義主要差在什麼地方?

煩請有空時能回覆
幫我解惑
謝謝

page 1 of 9123...89next »
Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License