The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



"Выпуск языка программирования Rust 1.54"
Версия для распечатки Пред. тема | След. тема
Форум Разговоры, обсуждение новостей
Исходное сообщение [ Отслеживать ]
Подсказка: Для сортировки сообщений в нити по дате нажмите "Сортировка по времени, UBB".
. "Выпуск языка программирования Rust 1.54" +2 +/
Сообщение от n00by (ok), 30-Июл-21, 13:41 
Интересный листинг.

00000000004000b0 <.text>:
  4000b0:    55                       push   %rbp
  4000b1:    48 89 e5                 mov    %rsp,%rbp
  4000b4:    6a 04                    pushq  $0x4           ; #define __NR_stat 4
  4000b6:    58                       pop    %rax
  4000b7:    6a 09                    pushq  $0x9           ; строка Hello World занимает 11 байт.
  4000b9:    5a                       pop    %rdx
  4000ba:    be cc 00 40 00           mov    $0x4000cc,%esi
  4000bf:    31 ff                    xor    %edi,%edi
  4000c1:    0f 05                    syscall
  4000c3:    6a 01                    pushq  $0x1           ; #define __NR_write 1
  4000c5:    58                       pop    %rax
  4000c6:    31 ff                    xor    %edi,%edi
  4000c8:    0f 05                    syscall
  4000ca:    eb fe                    jmp    0x4000ca

#define __NR_exit 60

Вот как выглядит корректный и с претензией минимальность


; fasm demonstration of writing 64-bit ELF executable
; (thanks to Franti.ek G.bri.)

; syscall numbers: /usr/src/linux/include/asm-x86_64/unistd.h
; parameters order:
; r9    ; 6th param
; r8    ; 5th param
; r10   ; 4th param
; rdx   ; 3rd param
; rsi   ; 2nd param
; rdi   ; 1st param
; eax   ; syscall_number
; syscall

format ELF64 executable 3

segment readable executable

entry $

           mov     edx,msg_size    ; CPU zero extends 32-bit operation to 64-bit
                                   ; we can use less bytes than in case mov rdx,...
           lea     rsi,[msg]
           mov     edi,1           ; STDOUT
           mov     eax,1           ; sys_write
           syscall

           xor     edi,edi         ; exit code 0
           mov     eax,60          ; sys_exit
           syscall

segment readable writeable

msg db 'Hello 64-bit world!',0xA
msg_size = $-msg


Ответить | Правка | Наверх | Cообщить модератору

Оглавление
Выпуск языка программирования Rust 1.54, opennews, 29-Июл-21, 22:11  [смотреть все]
Форумы | Темы | Пред. тема | След. тема



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру