#define EXTIO_PRINT_STROKE (*(volatile unsigned int *) 0x0300) #define EXTIO_PRINT_ASCII (*(volatile unsigned int *) 0x0304) main() { unsigned int k; for (k = 0; k <= 60; k++) { EXTIO_PRINT_STROKE = (unsigned int)0x00000000; EXTIO_PRINT_ASCII = k; EXTIO_PRINT_STROKE = (unsigned int)0x00000001; } } |
cross_compile.sh print_all_char.c |
bin2v print_all_char.bin |
<省略> case (word_addr) <省略> 10'h00b: data = 32'hafc00000; // 0040002c: SW, RAM[REG[30]+0]<=REG[0]; ここが PC=0x002c の命令 10'h00c: data = 32'h0810001b; // 00400030: J, PC<=0x0010001b*4(=0x0040006c); 10'h00d: data = 32'h00000000; // 00400034: SLL, REG[0]<=REG[0]<<0; 10'h00e: data = 32'h24020300; // 00400038: ADDIU, REG[2]<=REG[0]+768(=0x00000300); 10'h00f: data = 32'hac400000; // 0040003c: SW, RAM[REG[2]+0]<=REG[0]; 10'h010: data = 32'h24030304; // 00400040: ADDIU, REG[3]<=REG[0]+772(=0x00000304); 10'h011: data = 32'h8fc20000; // 00400044: LW, REG[2]<=RAM[REG[30]+0]; ここが 命令メモリ 0x011 の命令 10'h012: data = 32'h00000000; // 00400048: SLL, REG[0]<=REG[0]<<0; 10'h013: data = 32'hac620000; // 0040004c: SW, RAM[REG[3]+0]<=REG[2]; 10'h014: data = 32'h24030300; // 00400050: ADDIU, REG[3]<=REG[0]+768(=0x00000300); 10'h015: data = 32'h24020001; // 00400054: ADDIU, REG[2]<=REG[0]+1(=0x00000001); 10'h016: data = 32'hac620000; // 00400058: SW, RAM[REG[3]+0]<=REG[2]; 10'h017: data = 32'h8fc20000; // 0040005c: LW, REG[2]<=RAM[REG[30]+0]; 10'h018: data = 32'h00000000; // 00400060: SLL, REG[0]<=REG[0]<<0; 10'h019: data = 32'h24420001; // 00400064: ADDIU, REG[2]<=REG[2]+1(=0x00000001); 10'h01a: data = 32'hafc20000; // 00400068: SW, RAM[REG[30]+0]<=REG[2]; 10'h01b: data = 32'h8fc20000; // 0040006c: LW, REG[2]<=RAM[REG[30]+0]; 10'h01c: data = 32'h00000000; // 00400070: SLL, REG[0]<=REG[0]<<0; 10'h01d: data = 32'h2c42003d; // 00400074: SLTIU, REG[2]<=(REG[2]<61(=0x0000003d))?1:0; ここが 命令メモリ 0x01d の命令 10'h01e: data = 32'h1440ffef; // 00400078: BNE, PC<=(REG[2] != REG[0])?PC+4+65519*4:PC+4; <省略> endcase <省略> |
quartus_sh --flow compile DE2_115_Default |
参考書