Tag: att

GDB跨越命令

我有以下C代码: #include #include #define SECTSIZE 512 #define ELFHDR ((struct Elf *)0x10000) // scratch space void readsect(void*, unit32_t); void readsec(uint32_t, uint32_t, uint32_t); void bootmain(void) { struct Proghdr *ph, *eph; // read 1st page off disk readseg((uint32_t) ELFHDR, SECTSIZE*8, 0); . . // REST OF CODE . } 我正在使用gdb介入我的代码,看看发生了什么。 我找到了bootmain 0x7d0a的地址,我在那里放了一个断点。 b *0x7d0a c 以上2个命令: b放置断点, c运行直到达到断点。 […]

了解ATT汇编语言

C版: int arith(int x, int y, int z) { int t1 = x+y; int t2 = z*48; int t3 = t1 & 0xFFFF; int t4 = t2 * t3; return t4; } ATT大会版同样的程序: x at%ebp + 8,y at%ebp + 12,z at%ebp + 16 movl 16(ebp), %eax leal (%eax, %eax, 2), %eax sall $4, %eax // […]

我的(AT&T)程序集(x86-x64)代码应该增加但不增加

我正在尝试组装一个小程序(AT&T)。 我试图以整数的forms从用户那里获得一个输入,然后在它之后递增,然后输出递增的值。 但是,该值不会增加。 我花了最后几个小时尝试我能想到的一切,但它仍然不起作用,所以我有一个想法,我可能不太了解汇编中的概念,导致我没有发现错误。 这是我的代码: 1 hiString: .asciz “Hi\n” 2 formatstr: .asciz “%ld” 3 4 .global main 5 6 main: 7 movq $0, %rax #no vector registers printf 8 movq $hiString, %rdi #load hiString 9 call printf #printf 10 call inout #inout 11 movq $0, %rdi #loading exit value into register rdi 12 call exit […]