แท็บ Editor

หน้าจอแรกที่ใช้เขียนโค้ด Assembly หรือภาษา C และดู machine code ที่ถูก assemble โดยอัตโนมัติ

หน้าจอแท็บ Editor
หน้าจอแท็บ Editor — ซ้าย: source code, ขวา: program viewer

โครงสร้างของหน้าจอ

แท็บ Editor แบ่งหน้าจอออกเป็น 2 ส่วนหลัก:

1) ฝั่งซ้าย — Source Code Editor

เป็นพื้นที่ที่คุณเขียนหรือแก้ไขโค้ดได้โดยตรง รองรับ 2 ภาษา:

เมื่อแก้ไขโค้ดและไม่มี syntax error โปรแกรมจะ assemble โดยอัตโนมัติ และโหลดผลลัพธ์เข้าสู่ simulator ทันที

2) ฝั่งขวา — Program Viewer

แสดงผลโค้ดที่ถูก assemble แล้วในรูปแบบที่อ่านได้ คุณสามารถเลือกแสดงเป็น:

แถบสีน้ำเงินด้านซ้ายใช้สำหรับ คลิกตั้ง breakpoint ที่บรรทัดของคำสั่งใด ๆ ก็ได้

เคล็ดลับ กดปุ่มรูปเข็มทิศ (compass icon) เพื่อเปิดรายการ symbol ทั้งหมดในโปรแกรม ทำให้กระโดดไปยัง label ที่ต้องการได้รวดเร็ว

ตัวอย่างโปรแกรม Assembly แรก

ลองเปิดแท็บ Editor และพิมพ์โปรแกรมสั้น ๆ นี้:

.data
w: .word 0x1234

.text
lw   a0 w
addi a0 a0 1

โปรแกรมนี้:

การโหลดตัวอย่าง

Ripes มาพร้อมกับตัวอย่างหลายโปรแกรม ใช้เมนู File → Load Examples เพื่อเลือกโหลด แบ่งเป็น:

การเขียนโปรแกรมภาษา C

ข่าวดี — ในชุด Bundle นี้ RISC-V toolchain (riscv64-unknown-elf-gcc) ถูก bundle มาในโฟลเดอร์ toolchain/ แล้ว และ launcher (เริ่ม.bat) จะเพิ่ม path ของ toolchain เข้า PATH โดยอัตโนมัติ — Ripes จะตรวจพบและตั้งค่าให้เองในครั้งแรกที่เปิด

หากเปิด Ripes ด้วย launcher (เริ่ม.bat) สามารถใช้งาน C ได้ทันที:

  1. ในแท็บ Editor เปลี่ยน Input type เป็น C
  2. เขียนโค้ด C ตามต้องการ
  3. กดปุ่ม Build (หรือ Ctrl+B) — Ripes จะ compile และโหลด ELF เข้า simulator อัตโนมัติ
  4. ไปที่แท็บ Processor เพื่อรันและดู datapath
หน้าจอตั้งค่า C compiler
หน้าจอ Edit → Settings → Editor — หาก toolchain ตรวจพบแล้ว ช่อง compiler path จะเป็นสีเขียว

หาก Ripes ไม่พบ Compiler อัตโนมัติ

  1. ไปที่เมนู Edit → Settings → Editor
  2. กด Browse แล้วเลือกไฟล์ toolchain\bin\riscv64-unknown-elf-gcc.exe ในโฟลเดอร์ Bundle
  3. หาก path ถูกต้องช่อง compiler path จะเปลี่ยนเป็นสีเขียว

ไม่ได้ใช้ Bundle นี้?

หากใช้ Ripes บนเครื่องอื่นที่ไม่มี toolchain มาด้วย ดาวน์โหลด toolchain ได้จาก SiFive Freedom Tools v2020.04.0

ข้อควรรู้ Ripes ไม่รองรับ floating-point hardware ดังนั้นโค้ด C ที่ใช้เลขทศนิยมจะถูก compile ด้วย soft-float routines (จำลองการคำนวณทศนิยมด้วย integer arithmetic) ซึ่งทำให้โปรแกรมยาวขึ้นมาก

การคอมไพล์โดยไม่ใช้ Standard Library

หากต้องการให้โปรแกรมสั้นและอ่านง่ายสำหรับการเรียน แนะนำให้ใช้ flag -nostdlib:

void prints(volatile char* ptr);

void hello_world() {
    char* str = "Hello world";
    prints(str);
    return 0;
}

void prints(volatile char* ptr){ // ptr ถูกส่งผ่าน register a0
    asm("li a7, 4");
    asm("ecall");
}

เพิ่ม -nostdlib ในช่อง compiler arguments ในหน้า Settings และ วาง function ที่เป็น entry point ไว้ที่ตำแหน่งแรกของไฟล์ เสมอ