Ассемблер в Linux для программистов на C - ответы
Количество вопросов - 11
/**************************************** start of sample1.s *******************************/ .data num: .long 0x00000072 other_var: .long 0x00000001, 0x00000002, 0x00000003 .text .globl main main: movl (num), %eax movl (other_var), %ecx leal (%eax,%eax,2) ,%ecx /**************************************** end of sample1.s *******************************/Какие виды адресации использованы в вышеприведённом фрагменте программы?
/**************************************** start of sample1.s *******************************/ .data some_var: .long 0x00000072 other_var: .long 0x00000001, 0x00000002, 0x00000003 .text .globl main main: movl $0x48, %eax leal $0x32, %eax leal some_var, %eax leal other_var + 4, %eax leal some_var, $ecx /**************************************** end of sample1.s *******************************/Какие команды приведённого ассемберного кода приведут к ошибкам при компиляции?
/**************************************** start of sample1.s *******************************/ .data some_var: .long 0x00000072 test_var: .long 0x00000071, 0x00000072, 0x00000073 dummy_var: .long 0x00000072, 0x00000073, 0x00000074 .text .global main main: 1 leal dummy_var, %ecx 2 movl 0x00000072 %ecx 3 leal $0x00000072, %ecx 4 movl $dummy_var, %ecx 5 movl $test_var, %ecx /**************************************** end of sample1.s *******************************/В результате каких операций в регистр ecx будет занесено значение 0x72?
/**************************************** start of sample1.s *******************************/ .data .text .globl main main: movl $0, %eax movl $4, %ecx sum: addl %ecx, %eax loop sum movl $0, %eax ret /**************************************** end of sample1.s *******************************/Какие действия выполняются командой loop в вышеприведенном фрагменте?
/**************************************** start of sample1.s *******************************/ .data printf_format: . string "%s\n " str_in: .string "abc123()!@!777 " .set str_in_length, .-str_in .bss str_out: .space str_in_length .text .globl main main: pushl %ebp movl %esp, %ebp movl $str_in, %esi movl $str_out, %edi movl $str_in_length - 1, %ecx 1b: lodsb incb %al stosb loop 1b movsb popl %ebp ret /**************************************** end of sample1.s *******************************/Какие утверждения про приведённую выше программу верны?