i build a simple program and use file command to check program is 32-bit format. in turn, i use objdump to disassemble program and found some assembly instruction length larger than 4-byte.
i expect the program is 32-bit format. therefore, those assembly instruction length should not bigger than 4-byte. obviously, i am wrong. could you please tell me why it has 6-byte or 7-byte assembly instruction? thanks.
$ file a.out
a.out: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.2, for GNU/Linux 2.6.32, BuildID[sha1]=09aa196a671a6e169f09984360133ad9488f7e53, not stripped
$ objdump -d a.out
a.out: file format elf32-i386
Disassembly of section .init:
080482a8 <_init>:
80482a8: 53 push %ebx
80482a9: 83 ec 08 sub $0x8,%esp
80482ac: e8 8f 00 00 00 call 8048340 <__x86.get_pc_thunk.bx>
80482b1: 81 c3 4f 1d 00 00 add $0x1d4f,%ebx
80482b7: 8b 83 fc ff ff ff mov -0x4(%ebx),%eax
80482bd: 85 c0 test %eax,%eax
80482bf: 74 05 je 80482c6 <_init+0x1e>
80482c1: e8 3a 00 00 00 call 8048300 <__libc_start_main@plt+0x10>
80482c6: 83 c4 08 add $0x8,%esp
80482c9: 5b pop %ebx
80482ca: c3 ret