如何解决gcc 生成的代码中的操作码无效异常 6
我正在编写自己的操作系统,它有自己的 printf 函数。在这个函数中,我成功地实现了 %d、%u、%x、%c 和 %s 参数,但由于某种原因,%p 的类推(到 %d、u、x)代码导致无效的操作码异常,这意味着它要么是 gasm 错误或UB。
代码如下:
} else if (*format == 'p') {
format++;
void *p = va_arg(parameters,void*); <-- invalid opcode exception triggers in this
long n = (long) p; line of code (I know from GDB)
char buf[64] = "0x";
itoa64(n,&buf[2],16);
size_t len = strlen(buf);
tty_puts(buf);
written += len;
} else {
这是指令,保存的指令指针指向:
0x202ee2 <printf+866>: pxor %xmm0,%xmm0
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。