サポート / データブレークマクロ例
データブレークマクロ例
以下は、データブレークを実現するためのマクロ例です。これは、Port80のデータを指定してブレークするためのマクロです。以下マクロをCommand windowから実行するとプロシージャとしてiobrk(io_data)がSourcePointに登録されます。
登録後にCommand windowから iobrk(0x79) のようにデータを指定して実行することができます。このマクロは、SourcePoint 7.7.179-1で動作確認済みです。
define proc iobrk(io_data) define byte io_data { ////////// Remove port 80h breakpoint dbgremove = i/o access, location = 0x80p, size = byte; ////////// Setup port 80h breakpoint dbgbreak = i/o access, location = 0x80, size = byte; ////////// Print startup header printf("\n Executing macro to record I/O port 80h byte accesses\n\n"); printf(" Macro will stop when port 80 access data = %02X\n\n", io_data); do{ go; wait; printf(" Data At I/O Port 80h = %02X\n", port(80)); } while (port(80) != io_data) printf("\n Macro Stopped!!! Port 80h Access Data = %02X\n\n", port(80)); ////////// Remove port 80h breakpoint dbgremove = i/o access, location = 0x80p, size = byte; }