The OpenNET Project / Index page

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



"Выпуск языка программирования Rust 1.42"
Версия для распечатки Пред. тема | След. тема
Форум Разговоры, обсуждение новостей
Исходное сообщение [ Отслеживать ]
Отдельный RSS теперь доступен для каждого обсуждения в форуме и каждого минипортала.
. "Выпуск языка программирования Rust 1.42" +1 +/
Сообщение от Аноним84701 (ok), 13-Мрт-20, 17:28 
>> при этом обходясь без использования сборщика мусора и runtime
> даже у Си есть рантайм (он при вообще пустом main обработает argc, argv например),

Хм, точно?


#include <sys/syscall.h>
#include <unistd.h>

long write_(long fp, char* ptr, long size) {
    long result;
    __asm__ volatile (
        "syscall"
        : "=a"(result)
        : "a"(SYS_write), "D"(fp),"S"(ptr), "d"(size)
    );
    return result;
}

void exit_(long arg)
{
    long result;
    __asm__ volatile (
        "syscall"
        : "=a"(result)
        : "a"(SYS_exit), "D"(arg)
    );
}

void _start(void) {
  write_(1,"hello",sizeof("hello"));
  exit_(0);
}


gcc -nostartfiles -static -nostdlib min.c -O2 -s
objcopy -R .eh_frame -R .comment a.out
objdump -D a.out

a.out:     file format elf64-x86-64
Disassembly of section .text:
00000000004000b0 <.text>:
  4000b0:    b8 01 00 00 00           mov    $0x1,Йx
  4000b5:    0f 05                    syscall
  4000b7:    c3                       retq  
  4000b8:    0f 1f 84 00 00 00 00     nopl   0x0(%rax,%rax,1)
  4000bf:    00
  4000c0:    b8 3c 00 00 00           mov    $0x3c,Йx
  4000c5:    0f 05                    syscall
  4000c7:    c3                       retq  
  4000c8:    0f 1f 84 00 00 00 00     nopl   0x0(%rax,%rax,1)
  4000cf:    00
  4000d0:    b8 01 00 00 00           mov    $0x1,Йx
  4000d5:    bf 01 00 00 00           mov    $0x1,Мi
  4000da:    be f0 00 40 00           mov    $0x4000f0,%esi
  4000df:    ba 06 00 00 00           mov    $0x6,Мx
  4000e4:    0f 05                    syscall
  4000e6:    b8 3c 00 00 00           mov    $0x3c,Йx
  4000eb:    31 ff                    xor    Мi,Мi
  4000ed:    0f 05                    syscall
  4000ef:    c3                       retq  
Disassembly of section .rodata:

00000000004000f0 <.rodata>:
  4000f0:    68 65 6c 6c 6f           pushq  $0x6f6c6c65

*О, единорожек! Цып-цып-цып!*

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

Оглавление
Выпуск языка программирования Rust 1.42, opennews, 13-Мрт-20, 09:28  [смотреть все]
Форумы | Темы | Пред. тема | След. тема



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

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