- 1
- 2
- 3
- 4
- 5
#ifdef ret
#undef ret
#endif
#define ret return
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
−5
#ifdef ret
#undef ret
#endif
#define ret return
Говнокод или всё-таки нет? :)
TPAXHY_B_AHYC 20.12.2016 05:57 # −1
Graviton 21.12.2016 03:20 # 0
bormand 20.12.2016 06:47 # 0
З.Ы. Ты поломал код с асм вставками и любой код, который юзал переменную ret.
guest 20.12.2016 07:30 # 0
Steve_Brown 20.12.2016 10:17 # 0
guest 20.12.2016 10:20 # 0
j123123 20.12.2016 13:57 # 0
j123123 20.12.2016 14:06 # 0
guest 20.12.2016 17:55 # +3
Graviton 21.12.2016 03:12 # −2
Поэтому, в нормальном C++ коде никаких вставок не должно быть, также как и goto. Тем более разные реализации компиляторов смотрят на эти ебучие вставки по-разному, а некоторые вообще запрещают использование определенного типа асм-инструкций. Либо мы изначально что-либо пишем на Ассемблере, либо на C++. Иначе никак.
4e1 21.12.2016 05:39 # +1
https://github.com/torvalds/linux/search?utf8=%E2%9C%93&q=int+ret
11,936 code results
Graviton 21.12.2016 06:37 # +1
А еще, в английском слово "ret", может быть глаголом, который означает "мочить" (коноплю); может быть сокращением от : 1) "retired", 2) "returned" (наш пациент), 3) "ring-emitter transistor" (транзистор с кольцевым эмиттером); и т.д. и т.п.
Если честно, практика именования переменных - вопрос спорный. Лично меня переменные с именем ret напрягают, я лучше буду использовать бг-мерзкий result или придам конкретный смысл.
4e1 21.12.2016 07:37 # +3
да, я хотел возвратить именно мочёную коноплю, а не результат
практика задавать ret для имени возвращаемой переменной довольно распространенная, юзалась в обоих командах, где мне довелось поработать, и часто встречаю в статьях, опенсорсе. Хотя может сказывается работа преимущественно с С-подобным кодом уж не пыхарь ли ты часом?
guestinho 21.12.2016 16:39 # +1
dxd 21.12.2016 17:03 # 0
subaru 21.12.2016 17:41 # 0
guestinho 21.12.2016 16:36 # 0
bayan 24.12.2016 02:03 # 0
bormand 21.12.2016 06:34 # −1
Ах, так это еще и кресты... Тогда за такие макросы надо вообще анально карать.
Graviton 21.12.2016 06:40 # 0
bormand 21.12.2016 06:51 # +1
...процессора и конпелятора.
j123123 21.12.2016 08:15 # +1
Antervis 21.12.2016 09:36 # 0
j123123 21.12.2016 09:48 # 0
А вот SSE инструкции компилятор еще может втулить в ответ на сишный код без каких-либо интринсиков и асмовставок
dxd 21.12.2016 10:16 # 0
bayan 22.12.2016 00:40 # 0
Graviton 22.12.2016 03:36 # 0
Неплохо звучит. Прям-таки компилятор, разработанный "под коноплёй", что, кстати, не исключение.
barop 22.12.2016 03:36 # 0
Graviton 22.12.2016 04:45 # 0
barop 22.12.2016 14:58 # 0
Graviton 23.12.2016 03:51 # 0
3_14dar 22.12.2016 15:12 # +1
bayan 22.12.2016 00:40 # 0
ну вот в вебе любят посреди HTML вставлять PHP который генерирует JavaScript который генерирует HTML, и ничего
Graviton 22.12.2016 03:59 # 0
Многие вебщики понятия не имеют, как работают всякие окошки, кнопки и прочие свистоперделки, не говоря уже о коде Ассемблера.
Возвращаясь к asm-вставкам в C++, то существует эмпирическое правило "Не используй asm-вставки!". Вместо них гораздо лучше asm-код вынести в отдельный asm-файл, а затем подключить к проекту.
guestinho 22.12.2016 04:04 # 0
barop 22.12.2016 04:11 # 0
Graviton 22.12.2016 04:32 # 0
bayan 22.12.2016 21:55 # 0
Уважаю за свежий взгляд и небанальные выводы
guestinho 22.12.2016 21:59 # 0
bayan 22.12.2016 22:13 # +2
Кроме того асмо вставки наверняка не стандартны и конпелятороспецифичны и как я уже грил в 64бит там буй
http://mariusbancila.ro/blog/2010/10/17/no-more-inline-asm-in-vc-on-x64/
inkanus-gray 22.12.2016 22:21 # 0
bayan 22.12.2016 22:23 # 0
хорош-ли код gсс под ARM?
inkanus-gray 22.12.2016 22:24 # 0
bayan 22.12.2016 22:24 # 0
x86 говно же
ламерский вопрос: а gcc умеет под win32 без цигвина?
inkanus-gray 22.12.2016 22:24 # 0
bayan 22.12.2016 22:25 # 0
mingw-w64?
inkanus-gray 22.12.2016 22:27 # 0
bayan 22.12.2016 22:29 # 0
inkanus-gray 22.12.2016 22:30 # 0
bayan 22.12.2016 22:30 # 0
inkanus-gray 22.12.2016 22:31 # 0
Неужели старт в реальном режиме — это так плохо?
bayan 22.12.2016 22:35 # +1
Внмиание, сейчас копмпьютерные гно борманд нам всё объяснит.
>>Неужели старт в реальном режиме — это так плохо?
Ну целый режим со своей адресацией ради старта? Не слишком-ли сложно?
Нужно отрефакторить и выкинуть старый мусор. Частично это уже сделано (в 64 нет сегментов и нет v86), но говна еще осталось.
Или вот взять IO. Зачем нужен отдельный неймспейс под него?
--------
В общем чем проще понять ISA процессора обычному программисту -- тем лучше. ISA x86 сложно (именно потому детей учат на примерах других CPU) и оно сложно not because of good reason, а по причине обратной совместимости.
bormand 23.12.2016 06:25 # 0
barop 23.12.2016 13:38 # 0
dxd 23.12.2016 16:00 # 0
bayan 23.12.2016 16:34 # 0
Ваш кэп
bormand 23.12.2016 17:40 # 0
Да, ось потом ставит свою гдт.
В общем-то сама гдт процу не особо нужна (кроме некоторых кейсов). Если бы при резете теневые регистры правильно заполнялись - он мог бы сразу в протектеде просыпаться. Но совместимостьс древним говном, все дела...
bormand 23.12.2016 18:03 # 0
З.Ы. Хотя, по сути, она там и не нужна - старая фирмварь один хер на новых процах не взлетит.
1024-- 23.12.2016 18:32 # 0
Эксклюзивно для Борманда пустил душок свободы без модерации.
bayan 23.12.2016 21:59 # 0
ну вот фирмваря грит
mov ax, 0x123456
как это 0x123456 превратится в физ. адрес для контролера памяти?
bormand 24.12.2016 08:38 # +1
GDT проц читает только когда он суёт новый селектор в сегментный регистр:
- явный mov в сегментный регистр
- far call/jmp/ret
- вход в прерывание и выход из него
- lldt и ltr
Вот вроде и все кейсы. Каждая из этих инструкций читает одну запись из GDT и кеширует её в теневом регистре. И если твой код эти инструкции не юзает - можно какое-то время пожить совсем без GDT.
> как MMU работает
Никак, его в protected mode не обязательно включать (в отличие от long mode). Просто физические адреса равны виртуальным, вот и всё.
inkanus-gray 22.12.2016 22:27 # +2
huesto 22.12.2016 23:37 # +2
Я эти вставки воспринимаю примерно как сорт интринсиков, платформозависимые костыли.
> Кроме того асмо вставки наверняка не стандартны и конпелятороспецифичны
Ну естественно. Они и нужны, когда нужно сделать что-то изъебистое. Такое врятли может быть покрыто стандартом, а потому заведомо зависит от компилятора.
Кстати, в буст.атомик на 64-разрядной студии используют студио-специфичные интринсики.
barop 22.12.2016 04:10 # 0