汇编:lea 需要注意的一点

lea和mov的效用上不一样,如果当前%rsi的值是0,
lea 0x28(%rsi),%rax ,这个只是计算一个地址,而不是去做地址访问。
mov 0x8(%rsi),%rsi,而这个mov,在计算完地址,还要访问内存地址。如果rsi是0,就会出现非法访问错误。
在看汇编的时候需要注意这一点。不要被迷惑掉。

374d30: 55 push %rbp
374d31: 48 8d 46 28 lea 0x28(%rsi),%rax ,,,, 这里应该也会错
374d35: 4d 89 c1 mov %r8,%r9
374d38: 49 89 c8 mov %rcx,%r8
374d3b: 48 89 d1 mov %rdx,%rcx
374d3e: 48 89 c2 mov %rax,%rdx
374d41: 48 89 e5 mov %rsp,%rbp
374d44: 41 54 push %r12
374d46: 49 89 fc mov %rdi,%r12
374d49: 53 push %rbx
374d4a: 48 8d 5d a0 lea -0x60(%rbp),%rbx
374d4e: 48 89 df mov %rbx,%rdi
374d51: 48 83 ec 50 sub $0x50,%rsp
374d55: 48 8b 76 08 mov 0x8(%rsi),%rsi ,,,,卡在这一行,rsi当前值是0,

你可能感兴趣的:(coredump,gcc,汇编,lea,迷惑)