169 похожих чатов

В чём тут может быть косяк? вроде явных ошибок не

замечаю
;uint32_t send_resp(RESPD* ptr, char* content, uint32_t length)
send_resp:
push esi edi ebp
; get full size
mov ebp, [esp + 4*3 + 4]
mov ecx, [ebp + RESPD.count_header]
shl ecx, 1 ; *2
add ecx, 4 + 2 + 2 ; status code + 0x0d 0x0a + 0x0d 0x0a
add ecx, [ebp + RESPD.http_ver_len]
; add size all headers
xor edx, edx
@@:
cmp edx, [ebp + RESPD.count_header]
je @f
add ecx, [ebp + edx*8 + RESPD.header.len]
inc edx
jmp @b
@@:
; add size content
;add ecx, [esp + 4*3 + 12]

; alloc buffer
push ecx
stdcall Alloc, ecx
pop ecx
test eax, eax
jz .error_alloc

mov [ebp + RESPD.buffer], eax
mov [ebp + RESPD.buffer_size], ecx
mov edi, eax
; copy data
mov ecx, [ebp + RESPD.http_ver_len]
mov esi, [ebp + RESPD.http_ver_ptr]
rep movsb ; copy http ver

mov esi, base_response + response.code
mov ecx, response.end_headers - response.code
mov edx, edi
rep movsb ; copy default status code + headers

mov eax, [ebp + RESPD.http_status]
mov [edx], eax

test [ebp + RESPD.flags], FLAG_KEEP_ALIVE
jz @f

add edx, response.connection - response.code
mov dword[edx], 'keep'
mov dword[edx + 4], '-ali'
mov word[edx + 8], 've'
@@:
sub edx, response.connection
push edx
; copy addition headers
lea eax, [ebp + RESPD.header.ptr]
xor edx, edx
@@:
cmp edx, [ebp + RESPD.count_header]
je @f

mov esi, [eax]
mov ecx, [eax + 4]
rep movsb

mov cx, 0x0a0d
stosw

add eax, 8
inc edx
jmp @b
@@:
mov ax, 0x0A0D
stosw

pop ecx
; set content length
add ecx, response.content_len + 21
@@:
xor edx, edx
test eax, eax
jz @f
div dword[_DIV_10_]
add byte[ecx], dl
sub ecx, 1
jmp @b
@@:
; send response status line and headers
mov eax, [ebp + RESPD.session]

push dword 0
push dword[ebp + RESPD.buffer_size]
push dword[ebp + RESPD.buffer]
push dword[eax + CONNECT_DATA.socket]
call netfunc_send

cmp eax, -1
jz .exit
; send content

mov ecx, [esp + 4*3 + 8] ; ptr
test ecx, ecx
jz .free

push dword 0
push dword[esp + 4*4 + 12] ; size
push ecx
push dword[eax + CONNECT_DATA.socket]
call netfunc_send

cmp eax, -1
jz .exit
.free:
xor eax, eax
; free buffer
push eax
stdcall Free, [ebp + RESPD.buffer]
pop eax
.exit:
pop ebp edi esi
ret

.error_alloc:
mov eax, -1
jmp .exit

7 ответов

64 просмотра

В очередь!!))

КТ315
В очередь!!))

А вы поделитесь своим ботом ? Я хочу изучить его команды и операции по отдельности?

КТ315
Так я скинул выше.

Замечательно, спасибо большое

Mixail-Frolov Автор вопроса
.... ....
А вы поделитесь своим ботом ? Я хочу изучить его к...

да что там изучать, открыть бот апи и всё понятно

Mixail-Frolov Автор вопроса

вот он ассемблер с вечными проблемами пограничных значений и офсетов

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта