- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
- 89
- 90
- 91
- 92
- 93
- 94
- 95
- 96
const int sum(int a, int b){
return a+b;
}
int a(int x)
{
const std::function<int(int)> sum4 = std::bind(sum,_1, 4);
return sum4(123);
}
int b(int x)
{
puts("bagor");
const std::function<int(int)> sum4 = std::bind(sum,_1, 4);
return sum4(123);
}
int c(int x)
{
const std::function<int(int)> sum4 = std::bind(sum,_1, 4);
puts("bagor");
return sum4(123);
}
// Функции a и b нормально инлайнятся. Ассемблерный выхлоп:
sum(int, int): # @sum(int, int)
lea eax, [rdi + rsi]
ret
a(int): # @a(int)
mov eax, 127
ret
b(int): # @b(int)
push rax
mov edi, offset .L.str
call puts
mov eax, 127
pop rcx
ret
//А вот int c(int x)
c(int): # @c(int)
push rbx
sub rsp, 32
mov edi, 16
call operator new(unsigned long)
mov rbx, rax
mov qword ptr [rax], offset sum(int, int)
mov dword ptr [rax + 8], 4
mov qword ptr [rsp], rax
mov qword ptr [rsp + 24], offset std::_Function_handler<int (int), std::_Bind<int const (*(std::_Placeholder<1>, int))(int, int)> >::_M_invoke(std::_Any_data const&, int&&)
mov qword ptr [rsp + 16], offset std::_Function_handler<int (int), std::_Bind<int const (*(std::_Placeholder<1>, int))(int, int)> >::_M_manager(std::_Any_data&, std::_Any_data const&, std::_Manager_operation)
mov edi, offset .L.str
call puts
mov esi, dword ptr [rbx + 8]
mov edi, 123
call qword ptr [rbx]
mov ebx, eax
mov rax, qword ptr [rsp + 16]
test rax, rax
je .LBB3_3
mov rdi, rsp
mov rsi, rdi
mov edx, 3
call rax
.LBB3_3:
mov eax, ebx
add rsp, 32
pop rbx
ret
mov rdi, rax
call __clang_call_terminate
mov rbx, rax
mov rax, qword ptr [rsp + 16]
test rax, rax
je .LBB3_6
mov rdi, rsp
mov rsi, rdi
mov edx, 3
call rax
.LBB3_6:
mov rdi, rbx
call _Unwind_Resume@PLT
mov rdi, rax
call __clang_call_terminate
__clang_call_terminate: # @__clang_call_terminate
push rax
call __cxa_begin_catch
call std::terminate()
std::_Function_handler<int (int), std::_Bind<int const (*(std::_Placeholder<1>, int))(int, int)> >::_M_invoke(std::_Any_data const&, int&&): # @std::_Function_handler<int (int), std::_Bind<int const (*(std::_Placeholder<1>, int))(int, int)> >::_M_invoke(std::_Any_data const&, int&&)
mov rax, qword ptr [rdi]
mov rcx, qword ptr [rax]
mov edi, dword ptr [rsi]
mov esi, dword ptr [rax + 8]
jmp rcx # TAILCALL
std::_Function_handler<int (int), std::_Bind<int const (*(std::_Placeholder<1>, int))(int, int)> >::_M_manager(std::_Any_data&, std::_Any_data const&, std::_Manager_operation): # @std::_Function_handler<int (int), std::_Bind<int const (*(std::_Placeholder<1>, int))(int, int)> >::_M_manager(std::_Any_data&, std::_Any_data const&, std::_Manager_operation)
Решил попробовать std::bind.
https://godbolt.org/z/eW5eT5oj4
MAPTbIwKA 24.08.2021 16:28 # 0
bormand 24.08.2021 17:28 # +1
Что-то мне нямекает, что у тысяч ботов, которых регали нейронкой, пароль надёжнее моего. Ещё и у всех разный поди.
1024-- 24.08.2021 17:30 # +1
guest6 24.08.2021 17:32 # 0
guest6 24.08.2021 17:33 # +1
guest6 24.08.2021 17:33 # +1
He_ye6oK 24.08.2021 17:35 # +1
ABryCTOBCKuu_nemyx 24.08.2021 17:37 # +1
MAPTbIwKA 24.08.2021 17:38 # +1
guest6 24.08.2021 17:39 # +1
Ещё можно 123 в экспоненциальной записи, в плавающем питухе, в двоичной системе. Вариантов куча.
MAPTbIwKA 24.08.2021 17:40 # 0
guest6 24.08.2021 17:53 # 0
Desktop 24.08.2021 18:01 # 0
зачем ему это – фиг знает. скрипты тестит?
guest6 24.08.2021 18:01 # +1
Desktop 24.08.2021 18:41 # +1
1024-- 24.08.2021 18:56 # 0
Либо же слишком большой. Он сам намекнул недавно:
> Потому ответы Сверхразума на наши вопросы всегда будет выглядеть безумно и нелогично. Но это не потому что Сверхразум глуп.
http://govnokod.ru/27605#comment658972
А что если разметка комментариев - стеганографически зашифрованное послание? 1 комментарий - 1 символ?
bormand 24.08.2021 18:59 # +1
Он там ещё вчера недвусмысленно намекал, что "бакланопостит возникает из-за застоя".
Может в этом дело? Кому-то надоел застой на гк?
1024-- 24.08.2021 19:03 # +3
Какой багор )))
rotoeb 24.08.2021 19:48 # 0
Согласен. Друзьям должна понравиться клякса поноса в логотипе.
3.14159265 24.08.2021 20:32 # +1
3.14159265 24.08.2021 20:48 # +1
Это я с 2017 одной и той же фразой сру послания? Сложно как-то.
https://govnokod.ru/22632#comment378988
312312 24.08.2021 20:48 # 0
312312 24.08.2021 20:54 # 0
3.14159265 24.08.2021 20:29 # 0
Тот кто старался по мере возможности игнорить раковые треды дульфятника.
Нужно было больше раку отвечать на вопросы.
> скрипты тестит?
Мне что заняться нечем? Я сегодня на пляж сходил поплавал.
312312 24.08.2021 20:54 # 0
1024-- 24.08.2021 17:48 # +1
Сам использую и всем советую.
1024-- 24.08.2021 17:50 # +1
1024-- 24.08.2021 17:50 # +1
guest6 24.08.2021 17:53 # +1
guest6 24.08.2021 17:53 # +2
guest6 24.08.2021 17:50 # 0
Нахуя использовать то, чем никто не пользуется?
1024-- 24.08.2021 18:14 # 0
Единственный момент, когда велосипеды реально лучше массового продукта!
guest6 24.08.2021 17:31 # +1
bormand 24.08.2021 17:37 # 0
huestinho 24.08.2021 17:52 # −11
huestinho 24.08.2021 17:55 # 0
1024-- 24.08.2021 18:00 # 0
1024-- 24.08.2021 18:43 # 0
1024-- 24.08.2021 18:32 # 0
guest6 24.08.2021 18:41 # 0
1024-- 24.08.2021 18:50 # 0
1024-- 24.08.2021 17:46 # 0
guest6 24.08.2021 17:48 # +1
1024-- 24.08.2021 17:53 # 0
2. Чтобы он ощутил свою никчёмность.
3. Чтобы он начал спамить с бОльшего количества учёток, и мы быстрее подготовили список для Страйкера.
bormand 24.08.2021 17:54 # +3
Потому что иначе он потеряет смысл жизни. Да и один фиг он добывает учётки дольше, чем они банятся.
А вообще, всегда можно переключиться на вайтлист.
j123123 24.08.2021 17:58 # +1
Desktop 24.08.2021 18:01 # 0
j123123 24.08.2021 18:02 # 0
bormand 24.08.2021 18:04 # 0
Desktop 24.08.2021 18:06 # +1
j123123 24.08.2021 18:13 # 0
bormand 24.08.2021 18:14 # 0
Какое тестовое задание )))
CHayT 24.08.2021 18:14 # +1
1024-- 24.08.2021 18:06 # 0
Питухов со слабыми паролями надо забанить, а доктор Смегма пусть регистриурует новые учётки и повышает окупаемость сайта. Как покроет затраты на хостинг и кодинг - так и быть, заслужит право спамить.
MAPTbIwKA 24.08.2021 17:53 # 0
MAPTbIwKA 24.08.2021 17:39 # 0
MAPTbIwKA 24.08.2021 17:39 # 0
3.14159265 27.08.2021 15:01 # +1
Реальность: любое использование сложнее маркетингового хелоуворлда, распитушивается в несколько сот строк дрисни ассемблерного выхлопа.
guest6 27.08.2021 15:24 # +3
Например в жабке нельзя отказаться от GC, а в С++ от ref counting можно
Нельзя отказаться в жабке и от знания типов в рантайме
В С++ можно не пользоваться, и его как-бы не будет
j123123 27.08.2021 15:28 # +2
CHayT 27.08.2021 15:43 # +1
[1] https://github.com/cplusplus/draft/blob/e125ca7c66725801da118fa936e1444b22f8fb23/source/exceptions.tex
guest6 27.08.2021 15:51 # +1
Но вроде можно -fno-unwind-tables и -fno-exceptions у gcc сказать.
Была такая дока типа "как запихать С++ в лоу левел питушню" типа твоих контроллеров, и там как раз описывалось как всё говно поотрубать
guest6 27.08.2021 15:56 # +2
https://alex-robenko.gitbook.io/bare_metal_cpp/
С++, который понравится j123123!
guest6 27.08.2021 15:58 # +4
https://alex-robenko.gitbook.io/bare_metal_cpp/compiler_output/exceptions
назуй RTTI
https://alex-robenko.gitbook.io/bare_metal_cpp/compiler_output/rtti
нахуй STL
https://alex-robenko.gitbook.io/bare_metal_cpp/compiler_output/nostdlib
j123123 27.08.2021 16:04 # +1
JloJle4Ka 27.08.2021 16:17 # 0
guest6 27.08.2021 16:30 # 0
ABryCTOBCKuu_nemyx 27.08.2021 18:11 # 0
guest6 27.08.2021 18:15 # 0
Там есть какое-то количество мелких отличий, и если ты макросом заебенишь "инлайн" функцию такую, то вероятно можешь отсосать.
Или ты про "D"?
Так "D" сишные хедеры не понимает.
Есть какая-то тула, она поддерживает семь хедеров
ABryCTOBCKuu_nemyx 27.08.2021 18:22 # 0
Слинкуется всё отлично, если коллконвеншен совпадает.
Да, прототип функции придётся описать на «D», а не тупо подключить хедер. Но тебе всё равно придётся изучать прототип функции, чтобы использовать её в своём коде.
Или ты думаешь, что все функции, как implode в «PHP»: перепутал порядок аргументов, а она всё равно работает.
rotoeb 27.08.2021 22:04 # 0
Извиняюсь, что не по теме, но поэтому я за PHP. Всё, обсуждайте пародии на языки программирования дальше.
bormand 27.08.2021 18:31 # 0
* согласно стандарту, в реальных конпеляторах ситуация другая.
Да и зачем тебе при использовании функции VLA и касты воида во что-то? Это уже больше про конпеляцию реализации крестами.
З.Ы. А, тьфу, я дура. Ты же про макро/инлайн.
guest6 27.08.2021 18:43 # +1
В вижал си -- нет.
> про макро/инлайн.
ага)
Вообще я не видел в дикой природе чтобы из С++ было не дёрнуть сишный API.
Но гипотетически такой шанс есть
bormand 27.08.2021 18:46 # +1
Потому что юзаешь so'шки и dll'ки, скорее всего. А там из реальных проблем разве что массив нулевой длины в хедере.
guest6 27.08.2021 18:50 # 0
Массив нулевой длины это такой хак, когда ты в последнее поле его пихаешь, и потом выделяешь память?
bormand 27.08.2021 22:08 # 0
Да и не встретишь, наверное. Популярные сишные либы официально совместимы с c++, даже extern "C" сами добавляют.
ABryCTOBCKuu_nemyx 27.08.2021 16:06 # +1
ABryCTOBCKuu_nemyx 27.08.2021 16:11 # +1
3.14159265 27.08.2021 16:10 # +1
И действительно тривиальный пример генерит вполне питумальный кот.
А добавляешь одну сточку (допустим отладочную) и тут джва экрана привычной крестодрисни.
В «Сишке» такого нет. Там препроцессор просто подставляет параметр, и обычно компилятор от этого так с ума не сходит.
guest6 27.08.2021 16:18 # 0
Например ключевое слово "virtual" может нехило там усложнить выхлоп, хотя выглядит невинно
guest6 27.08.2021 16:19 # 0
ABryCTOBCKuu_nemyx 27.08.2021 16:26 # 0
А для виртуального нужно строить табличку виртуальных методов, потом вызывать его по этой табличке, а не по фиксированному смещению...
guest6 27.08.2021 16:29 # +1
"Виртуальность" это мощный интсрумент для выстрела в ногу реализации всякой ООПшни типа полиморфизма, но он не бесплатный
В С++ ты можешь его отключить, и вроде в C# тоже. А например в джаве нет (хотя вероятно JIT его за тебя отключит, если ты им не пользуешься)
mittorn 22.09.2021 15:36 # 0
guest6 22.09.2021 15:40 # 0
или вы про invoke{virtual,static} в йажа?
CEHT9I6PbCKuu_nemyx 22.09.2021 15:43 # 0