The OpenNET Project / Index page

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



Индекс форумов
Составление сообщения

Исходное сообщение
"Выпуск языка программирования Rust 1.42"
Отправлено Аноним84701, 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

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

 

Ваше сообщение
Имя*:
EMail:
Для отправки ответов на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
  Введите код, изображенный на картинке: КОД
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



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

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