PCIe 2.0: 5GT/s 4Gb/s 500MB/s
PCIe 3.0: 8GT/s 8Gb/s 1GB/s
// c.cpp int main(int argc, char* argv[]) { char s0[30], s1[30]; int ret; for (int i=argc-1; i>0; i--) { s0[0] = s1[0] = 0; //sscanf(argv[i], "%*[^:]:%s", s0); //[^:]代表在':'處設斷點但不包含':', '*'代表忽略'%'起始的字串 sscanf(argv[i], "-%29[^:]:%29s", s0, s1); if (s0[0] == 0 || s1[0] == 0) puts("Wrong type!"); else printf("%s : %s\n", s0, s1); } return 0; }
typedef unsigned char BYTE; typedef unsigned short WORD; typedef unsigned int DWORD; enum Colour{ BLACK=0, BLUE, GREEN, CYAN, RED, MAGNETA, BROWN, LGRAY, \ DGRAY=8, LBLUE, LGREEN, LCYAN, LRED, LMAGNETA, YELLOW, WHITE}; #define COLOUR(forecolour, backcolour) ((backcolour) << 4 | (forecolour) & 0x0F) void WriteString(int y, int x, BYTE colour, char *string) { volatile WORD *pvram; for (DWORD i=0;string[i]!=0; x++, i++) { pvram = (volatile WORD *)0xB8000 + y * 80 + x; *pvram = (BYTE)string[i] | colour << 8; } } void WriteCharacter(int y, int x, BYTE colour, BYTE ch) { volatile WORD * pvram; pvram = (volatile WORD *)0xB8000 + (y * 80 + x) ; *pvram = ch | (colour << 8); } int main() { WriteCharacter(1,0, COLOUR(RED, BLACK), 'H'); WriteCharacter(1,1, COLOUR(RED, BLACK), 'i'); WriteString(1, 3, COLOUR(GREEN, BLACK), "Martin."); }