| 250 | } |
| 251 | |
| 252 | public CsRegsAccess regsAccess() { |
| 253 | Memory regsReadMemory = new Memory(64*2); |
| 254 | ByteByReference regsReadCountRef = new ByteByReference(); |
| 255 | Memory regsWriteMemory = new Memory(64*2); |
| 256 | ByteByReference regsWriteCountRef = new ByteByReference(); |
| 257 | |
| 258 | int c = cs.cs_regs_access(csh, raw.getPointer(), regsReadMemory, regsReadCountRef, regsWriteMemory, regsWriteCountRef); |
| 259 | if (c != CS_ERR_OK) { |
| 260 | return null; |
| 261 | } |
| 262 | |
| 263 | byte regsReadCount = regsReadCountRef.getValue(); |
| 264 | byte regsWriteCount = regsWriteCountRef.getValue(); |
| 265 | |
| 266 | short[] regsRead = new short[regsReadCount]; |
| 267 | regsReadMemory.read(0, regsRead, 0, regsReadCount); |
| 268 | |
| 269 | short[] regsWrite = new short[regsWriteCount]; |
| 270 | regsWriteMemory.read(0, regsWrite, 0, regsWriteCount); |
| 271 | |
| 272 | return new CsRegsAccess(regsRead, regsWrite); |
| 273 | } |
| 274 | } |
| 275 | |
| 276 | public static class CsRegsAccess { |