Как Подсистема для Приложения Unix в Windows реализует Системные вызовы в сборке? - PullRequest
2 голосов
/ 12 июня 2011

Как этот системный вызов linux int $0x80.

Реализует ли SUA нечто подобное?Если да, что это за команды?

этот конкретный код я хочу изменить для использования в SUA

#cpuid.s Sample program to extract the processor Vendor ID
.section .data
output:
    .ascii "The processor Vendor ID is 'xxxxxxxxxxxxx'\n"
.section .text
.globl _start
_start:
    movl $0, %eax
    cpuid
    movl $output, %edi
    movl %ebx, 28(%edi)
    movl %edx, 32(%edi)
    movl %ecx, 36(%edi)
    movl $4, %eax
    movl $1, %ebx
    movl $output, %ecx
    movl $42, %edx
    int $0x80
    movl $1, %eax
    movl $0, %ebx
    int $0x80

Ответы [ 2 ]

1 голос
/ 12 июня 2011

Это подсистема для Unix, а не весь компьютер под управлением Linux.

int 0x80 - это способ вызова системных вызовов в Linux.Это деталь реализации, касающаяся POSIX, и POSIX - это действительно то, что объединяет Linux и SUA.Так что я бы сказал, что хотя Linux (на x86) поддерживает 0x80 для системных вызовов, я не вижу причин, по которым SUA в Windows понадобится.Это потому, что SUA не является системой, которая включает этот уровень совместимости с Linux.Если вы собираете программу для Linux, она может использовать int 0x80, но вы можете обнаружить, что она делает что-то совсем другое, если вы создаете ее под SUA для достижения цели выполнения системного вызова.

0 голосов
/ 12 июня 2011

Windows имеет системные вызовы, аналогичные linux, для доступа к службам ядра из пользовательского режима.Обычно вы не используете инструкцию syscall или int напрямую, хотя вы используете одну из оболочек в ntdll.dll.

Определенно нет никакой связи 1: 1 между системными вызовами Linux иСистемные вызовы Windows.

Различные подсистемы (Win32, например, kernel32.dll и user32.dll и POSIX, например, библиотеки SUA) вызывают ntdll.dll функции, когда им необходимо выполнить системные вызовы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...