cprintf in JOS)-O1 (or -O2) to -O0 in makefilea / b (both of int)?
int)%idtr: point to the base address of IDT
struct gatedesc (defined in mmu.h)%tr: we only use ss0 & esp0
vm.c: switchuvm() - ss0 and esp0iret do
div 1 0: user → kernel w/o error code
idivl againb vector0x/6x $esp when entering kernelstruct trapframeman signaldiv.c: memset somethingb vector14x/6x $espkern/trap.cint z = 0; ticks = ticks / z; to idtinit()b vector0x/6x $espeip/cs/eflags; no ss/esp for kernel → kernelT_IRQ0 + IRQ_TIMER in xv6
lapicinit() in lapic.ctrap() in trap.cint $0x40 (64)usys.S (user) and syscall.c (kernel)gcc -nostdlib -m32straceint $0 to confuse the kernel with division by zero?#include <sys/syscall.h>
#include <unistd.h>
// syscall number: %eax
// syscall parameters %ebx, %ecx, %edx, %esi, %edi, %ebp
void _start(void)
{
int fd = 1;
char buf[] = "hello world!\n";
size_t count = sizeof(buf) - 1;
asm volatile ("int $0x80"
: /* ignore output */
: "a"(__NR_write), "b"(fd), "c"(buf), "d"(count)
: "cc", "edi", "esi", "memory"
);
asm volatile ("int $0x80"
: /* no output */
: "a"(__NR_exit), "b"(0)
);
}