我正在写一个用户空间C程序来读取硬盘。
我需要把汇编程序指令转换成C程序代码。怎么能做到?
mov eax, [rsi+0x0C]
这里
eax
可以是任何变量。但是,rsi
是值为0xc1617000
的基址寄存器。此值不变。 最佳答案
可以为C中的指针赋值。请尝试以下操作:
uint8_t *rsi = (uint8_t*)(uintptr_t) 0xc1617000; // The uintptr_t cast isn't really needed, but might help portability.
uint32_t value = *(uint32_t *)(rsi + 0x0C);
当然,较短的版本是:
uint32_t value = *(uint32_t *)0xc161700C;
基本上,您将该常量解释为指向
uint32_t
的指针,然后取消对它的引用。