#include #include #include #include void outputk(void *data, const char *buf, size_t len) { for (int i = 0; i < len; i++) { printcharc(buf[i]); } } void printk(const char *fmt, ...) { va_list ap; va_start(ap, fmt); vprintfmt(outputk, NULL, fmt, ap); va_end(ap); } void print_tf(struct Trapframe *tf) { for (int i = 0; i < sizeof(tf->regs) / sizeof(tf->regs[0]); i++) { printk("$%2d = %08x\n", i, tf->regs[i]); } printk("HI = %08x\n", tf->hi); printk("LO = %08x\n\n", tf->lo); printk("CP0.SR = %08x\n", tf->cp0_status); printk("CP0.BadV = %08x\n", tf->cp0_badvaddr); printk("CP0.Cause = %08x\n", tf->cp0_cause); printk("CP0.EPC = %08x\n", tf->cp0_epc); } void printk_1_check(void) { printk("%5d\n", 999999); printk("%5d\n", 12); printk("%5d\n", -12); printk("%5d\n", -1234); printk("%05d\n", 12); printk("%-5d\n", 12); printk("%-5d\n", -12); printk("%05d\n", -12); printk("%05b\n", -8); printk("%05b\n", 2147483647); printk("%05d\n", -100); printk("%05o\n", -100); printk("%05O\n", -100); printk("%05u\n", -100); printk("%05U\n", -100); printk("%05x\n", 1194684); printk("%05X\n", 1194684); printk("%05x\n", -1194684); printk("%05X\n", -1194684); int asc = 65; for (asc = 65; asc <= 90; asc++) { printk("%c", asc); } printk("\n"); char str[] = "I love buaa scse!"; char *strptr = str; printk("%s\n", str); printk("%c", *strptr++); printk("%c", *strptr++); printk("%c", *strptr); printk("\n"); } void printk_2_check(void) { int a = 97; int b = -97; printk("%d\n", a); printk("%c\n", a); printk("%x\n", a); printk("%u\n", a); printk("%b\n", a); printk("i love buaa\n"); printk("abcdefghijklmnopqrst\n"); printk("i love os\n"); printk("string\n"); printk("good luck\n"); printk("%dand%d\n", b, a); printk("%dand%c\n", b, a); printk("%dand%x\n", b, a); printk("%dand%b\n", b, a); printk("%dand%u\n", b, a); printk("%04dend\n", a); printk("%04xend\n", a); printk("%-4dend\n", a); printk("%-4xend\n", a); printk("%ldend\n", a); printk("%04ldend\n", a); printk("%04lxend\n", b); } void printk_3_check(void) { int b = 98; int c = -98; int d = 2022; printk("%b\n", b); printk("%d\n", b); printk("%D\n", b); printk("%o\n", b); printk("%u\n", b); printk("%U\n", b); printk("%x\n", d); printk("%X\n", d); char str[] = "printk_1"; printk("printk_1\n"); printk("This letter is %c\n", *str); printk("start- %s -end\n", str); printk("%d and %d\n", c, b); printk("%d and %c\n", c, b); printk("%d and %x\n", c, b); printk("%d and %b\n", c, b); printk("%d and %u\n", c, b); }