Я не говорю о том, что данные можно положить только с помощью push. И способов положить я знаю наверняка поболее чем ты
Дурацкое утверждение основанное на непомерной любви самого себя.
2 Мб строка в стэк не поместится, представь себе, это еще одно ограничение. А вот скажем в 1000 байт - запросто.
-----
И еще не веди себя как человек владеющий набором комплексов неполноценности, это никому не к лицу. Не надо изворачивать фразами "открою вам страшную тайну" и "Думай, прежде чем говорить". Это показывает меру твоего вомпитания а не степень знаний.
Ты недавно изучил ассемблер - молодец. Я его уже давно знаю, и юзаю в отдельных моментах, и хоть это и не в моих привычках раздуваться от важности, можеш почитать скажем содержимое этих ссылок:
http://bbs.vbstreets.ru/viewtopic.php?t=23423
http://bbs.vbstreets.ru/viewtopic.php?t=23362
http://vbstreets.ru/VB/Articles/66227.aspx
Если у тебя есть хоть немного объективной самооценки, ты поймеш, что мне просто нет смысла в очередной раз кому то чтото доказывать, это уже пройденный этап. В конце концов дел у меня хватает
INSTRUCTION SET REFERENCE, N-Z
PUSH—Push Word or Doubleword Onto the Stack
Description
Decrements the stack pointer and then stores the source operand on the top of the stack. The
address-size attribute of the stack segment determines the stack pointer size (16 bits or 32 bits),
and the operand-size attribute of the current code segment determines the amount the stack
pointer is decremented (2 bytes or 4 bytes). For example, if these address- and operand-size
attributes are 32, the 32-bit ESP register (stack pointer) is decremented by 4 and, if they are 16,
the 16-bit SP register is decremented by 2. (The B flag in the stack segment’s segment descriptor
determines the stack’s address-size attribute, and the D flag in the current code segment’s
segment descriptor, along with prefixes, determines the operand-size attribute and also the
address-size attribute of the source operand.) Pushing a 16-bit operand when the stack addresssize
attribute is 32 can result in a misaligned the stack pointer (that is, the stack pointer is not
aligned on a doubleword boundary).
The PUSH ESP instruction pushes the value of the ESP register as it existed before the instruction
was executed. Thus, if a PUSH instruction uses a memory operand in which the ESP
register is used as a base register for computing the operand address, the effective address of the
operand is computed before the ESP register is decremented.
In the real-address mode, if the ESP or SP register is 1 when the PUSH instruction is executed,
the processor condition.
Иди на свой vbstreet и там будешь рассказывать сказки, как ты делал push r8 и передавал 1000 байт строки в качестве параметра через стек. Там как раз твоего уровня аудитория, она может и поверит тебе.
Если уж говорить о знании русского языка, то HOOLIGAN пишет нормальным языком (в смысле правописания) в отличие от других знатоков (утверждение основанное, человек владеющий , вомпитания а не ). Если честно, слово можеш меня коробит больше.
Если уж говорить о знании русского языка, то HOOLIGAN пишет нормальным языком
Да я не спорю, просто так уж повелось что в грамотном русском нет слова ложит. Есть синонимы, скажем кладет и т.п. "ложит" используется только как основа для однокоренных слов. Это не принципиально, но такие вещи угнетают гораздо больше чем простые опечатки
Да я не спорю, просто так уж повелось что в грамотном русском нет слова ложит. Есть синонимы, скажем кладет и т.п. "ложит" используется только как основа для однокоренных слов. Это не принципиально, но такие вещи угнетают гораздо больше чем простые опечатки
Флуд возвращается Я бы не стал постить, если бы это были простые опечатки. За ним такая ошибка была замечена давно. Вомпитанность - это действительно опечатка, а можеш, предполагаеш...
Да, я знаю, что слово "ложить" в правильном русском без приставки не употребляется. Как-то именно по поводу этих двух слов беседовал с одним учителем русского языка, который и просветил меня о применении этих слов.
я думал ты юмор поймешь
А вот пропуск знаков препинания меня коробит значительно больше, так как такая ошибка зачастую может коренным образом изменить смысл фразы, в отличие от замены "класть" на "ложить".
Или упомянутое выше "можеш". Или перлы "стараеться", "закрываеться"
Вот это самая фигня! Ну, не знают люди русского, чё делать? Вообще стоило бы поставить модератора, который бы удалял посты с систематическими ошибками (ладно раз-два ошибся, это могла быть опечатка, а когда несколько месяцев только и читаешь можеш и т.д.)
И что ? Ты сможешь сделать
mov ax,offset msgString
push ax
???
Попробуй Только не надо мне говорить, что можно сделать два раза push ax, т.к. это эквивалентно push eax
Да и не собираюся Ты просто сказал что:
Параметры в любую из функций для процессоров семейства i386 (к которым принадлежит и наши с тобой процессоры) имеют длину 4 байта.
Я могу написать функцию которая берет параметры и не в 4 байта Раз могу положить, значит могну взять, т.ч. не следует обобщать, что так уж и все все функции
И почему ты считаешь что в кадждом параметре должна быть строка ? разве единичка переданная в качестве параметра не есть параметр ?
push r8
Это конечно перл )
2 Мб строка в стэк не поместится, представь себе, это еще одно ограничение. А вот скажем в 1000 байт - запросто.
Даже с такими размерами - рекурсия не для тебя )
ЗЫ
Как сказал мой батька, как-то раз... Со знаками препинания у меня в школе было все нормально... Я их ставил даже больше чем требовалось )
2HOOLIGAN, хр людей выселять! Комьюнити у нас мирное и мы всех любим
Иди на свой vbstreet и там будешь рассказывать сказки, как ты делал push r8 и передавал 1000 байт строки в качестве параметра через стек. Там как раз твоего уровня аудитория, она может и поверит тебе
Да моего уровня. Правда и тебе подобных там хватает.... К счастью и здесь, и там, таких меньшенство.
Ну а куда мне идти... Это уже я у тебя не спрашиваю.
+Что мне будет если я покажу пример где программа кидает в стэк 2 Мб информации? Или такого совсем не бывает?
ANDREY
Не надо уходить в сторону и подменять понятия.
Мне не нужно, чтобы ты положил в стек какое-то количество байт в пределах отведенного под стек пространства.
В этом топике речь идёт о передаче строки в функцию в качестве одного из параметров. Ты утверждал, что можно передать в ф-цию именно всю последовательность символов строки, а не только её адрес.
Будь добр, пример передачи строки в WndProc в студию. Чтобы первый байт lParam'а был первым байтом строки, второй - вторым, третий - третьим и т.д. до 2097152-го символа включительно.
P.S.
Я никого никуда не гоню. Всего лишь предлагаю такого рода глупости как "push r8", "суммарная длина параметров stdcall" и "передача последовательности байт строки" рассказывать на vbstreets. И всё.