※ INITCODE
INICODE 用來自動產生 reset vector,堆疊初始化,週邊初始化。
Syntax: INITCODE [BOOT386] [RESET|NORESET] [NOTHING] [STACK|NOSTACK] [ioport=data]
[OUTBYTE addr16=value8] [OUTWORD addr16=value16] [OUTDWORD addr16=value32]
[INBYTE addr16] [INWORD addr16] [INDWORD addr16]
[WRITEBYTE addr32=value8] [WRITEWORD addr32=value16] [WRITEDWORD addr32=value32]
[READBYTE addr32] [READWORD addr32] [READDWROD addr32]
[filename=file.ext CLASS=class_name]
- BOOT386: 產生與 386 以後 cpu 的相容開機引導程式。
- RESET: 在 FFFF0H 產生一段 far jump 到程式開始的位址。
- NOTHING: 強制產生 class ??LOCATE。
- STACK: 產生 SS:SP 初始化程式碼,會放在 class ??LOCATE 的 segment ??STACKINIT。
- ioport: 允許週邊暫存器透過檔案初始化,會放在 class ??LOCATE 的 segment ??CPUINIT。
- OUTBYTE/INBYTE: GPIO 的讀寫操作。
- WRITEBYTE/READBYTE: 記憶體的讀寫操作。
- INITCODE NOTHING: 建立一個 segment 包含一個 far jump 到程式進入點,沒有包含任何初始碼。
- INITCODE filename=file.ext CLASS=class_name
把 file.ext(binary) 放到 class_name,並把 code 放到 startup code execution list。
Examples 範例
- cputype i80186
initcode reset umcs=0xf038 lmcs=0x0ff8 - initcode outbyte 0xfffe=0x11
※ LISTFILE
LISTFILE 用來設定 listing file 要包含那些資料。
Syntax: LISTFILE [SEGMENTS] [PUBLICS[BY ADDRESS|BY NAME] [COLUMNS=(1|2)] [WIDTH=(80|132)] [SYMBOLS] [LINES] [REGIONS] [CHECKSUMS] [FILENAME=file]
- SEGMENTS: 建立一個 absolute segment map,包含 segment 的開始位置,結束位置,長度。
- REGIONS: 包含一份由 MAP 所建立的記憶體空間配置
- CHECKSUMS: 包含在程序中使用的 checksum 或 CRC。
- PUBLICS: 輸出 public symbol,利用 BY ADDRESS/BY NAME 排序。
- COLUMNS: 輸出 public symbol 的列數 1 or 2。
- WIDTH: 輸出 public symbol 的寬度 80 or 132。
- SYMBOLS: 輸出額外的除錯訊息,比如 local symbol。
- LINES: 輸出行數。
- FILENAME: 設定輸出的檔名,預設值為原始輸入檔案,副檔案改成 .LOC。
Examples 範例
- listfile segments file=test.loc
- listfile publics lines symbols segments
※ MAP
MAP 用來指定某塊記憶體的存取型態。
Syntax: MAP [name] addr TO addr AS memtype
- name: 別名。
- addr: 定義起始位址及終止位址。
- memtype:
- RDONLY: 唯讀。
- RDWR: 可讀可寫。
- RESERVED: 不可存取。
- MMIO: Memory-mapped I/O。
- IRAM: Internal RAM。
- SFR: Special function registers。
Examples 範例
- map my_data 0x00000 to 0x0ffff as rdwr
- map 0x10000 to 0xEFFFF as reserved
※ ORDER
ORDER 用來連結 anchor
Syntax: ORDER anchor_class class_list
Examples 範例
- order DATA BSS STACK
- order DATA BSS
order BSS STACK
※
Syntax:
Examples 範例
張貼留言