Я пытаюсь запустить несколько строк asm на своих 64-битных (Ubuntu 12.04) Просто для выполнения перезагрузки системы перезагрузки. Я могу скомпилировать его, но при запуске ничего не происходит.Запуск i_386 asm на x86_64: инструкция перезагрузки
Вот код:
section .text
global _start
_start:
mov eax,88
mov ebx,0xfee1dead
mov ecx,672274793
mov edx,0x89abcdef
mov esi,0
int 0x80
Я скомпилировать его с помощью:
nasm -f elf reboot.asm
Затем связать его с помощью:
ld -m elf_i386 -s -o reboot reboot.o
У меня есть некоторые вопросы, касающиеся такого поведения:
- Если я использую его правильно, запускает этот 32-битный код в 64-разрядной системе, возникновение проблемы?
- Мне интересно пропустить NULL в регистр% esi, является ли этот аргумент неправильным для перезагрузки syscall?
Я уже использовал sudo. Я обнаружил, что ошибка была прочитана человеком перезагрузки. флаг в edx i теперь используется 0x1234567, и он работает! – Tezirg