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

Короче сгенерила мне эта штука код на ассемблере: struc string val

{
common
local .value
dq .value
.value:
if ~val eq
db val
end if
db 0
}

format ELF64 EXECUTABLE 3

; function main
main:
push rbp
mov rbp, rsp
argc equ ebp+16
argv equ ebp+24
mov rax, [_ba3a02b09bc44fb1]
push rax
call puts
add rsp, 8
mov rax, 0
leave
ret


; function puts
puts:
push rbp
mov rbp, rsp
string equ ebp+16
mov rax, [string]
push rax
call strlen
add rsp, 8
mov rdx, rax
mov rax, 4
mov rax, rax
mov rax, 1
mov rbx, rax
mov rax, [string]
mov rcx, rax
int 0x80
leave
ret


; function strlen
strlen:
push rbp
mov rbp, rsp
string equ ebp+16
mov rax, [string]
mov rsi, rax
mov rax, rcx
mov rbx, rax
mov rax, rcx
xor rax, rbx
mov rcx, rax
repnz scasb
mov rax, rcx
leave
ret


_ba3a02b09bc44fb1 string <"Hello, world!", 10, 0>

А этот код, падла, сегфолтит. можете подсказать, в чём проблема?

12 ответов

56 просмотров

* оптимизатор ещё не писал

Стикер

хз, я без дебаггера запускал

я нашел несколько багов в своем генераторе, исправил, код теперь другой, но всё ещё сегфолтит struc string val { common local .value dq .value .value: if ~val eq db val end if db 0 } format ELF64 EXECUTABLE 3 ; function main main: push rbp mov rbp, rsp argc equ rbp+16 argv equ rbp+24 mov qword rax, [_31849ec0716e454d] push qword rax call puts add qword rsp, 8 mov qword rax, 0 leave ret ; function puts puts: push rbp mov rbp, rsp string equ rbp+16 mov qword rax, [string] push qword rax call strlen add qword rsp, 8 mov rdx, rax mov qword rax, 4 mov rax, rax mov qword rax, 1 mov rbx, rax mov qword rax, [string] mov rcx, rax int 0x80 leave ret ; function strlen strlen: push rbp mov rbp, rsp string equ rbp+16 mov qword rax, [string] mov rsi, rax mov qword rax, rcx mov rbx, rax mov qword rax, rcx xor rax, rbx mov rcx, rax repnz scasb mov qword rax, rcx leave ret _31849ec0716e454d string <"Hello, world!", 10, 0>

Vi Chapmann ٩( 💢•̀ з•́)و Chapmann
я нашел несколько багов в своем генераторе, исправ...

* и да, я знаю, что там куча бесполезных инструкций. будет исправлено

да как это узнать? я gdb толком не пользовался

а как ещё длину строки вернуть то

☝️

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

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

Anyone here suffers from unexplained aural migraines, who would be up for talking for a bit? Doesn't *have* to be aural, but I am not asking about headaches, I mean actual mi...
Martin Rys
55
Я тут за тем, чтобы задать вопрос, так как не знаю ассемблер, учу с/с++. Короче, насколько дорога операция перехода в функцию при ее вызове? Дело в том, что в с++ есть макросы...
Максим Рябцев
12
hello friends. Do you know how can I learn getx? I have a software project that I should deliver it up to 5 weeks later and I need to learn firebase too. I will be thankfull
AmirHossein Razavi
15
Доброе время суток! у меня тут иноды закончились. и понял почему по сути кстит, я периодически очищаю постгрес и сентри контайнер: postgres=# DELETE FROM nodestore_node WHER...
Юсиф Насиров
9
Привет, нужен совет старших товарищей. Есть глобальная переменная var DefaultDataFolder:string; инициализируем DefaultDataFolder:='a:\_OUT\'; есть примитивная процедур...
Max Otto
14
lazarus-3.2.0/gtk, linux патч "имя проекта по умолчанию project1 -> prj" день добрый не нравится "именя проекта по умолчанию" (project1), к.раз приходится переименовывать (н...
livontiy
5
Вопрос. Теоретический. Есть список команд. Команды отправляю в обработку некой функции, по очереди. Разные команды могут давать разные результаты после обработки. В зависимос...
Serjone
7
Коллеги, а в чём сейчас хорошо писать на перле, в смысле ide? Пробовал в идее с плагином, подсветка есть, даже какие-то предупреждения есть, но рефакторинга считай нет. Перене...
Дмитрий Петров
9
Can I forward ports (including the SSH port) between two machines without SSH? I know I can forward SSH server port from machine A (which blocks all requests by firewall) to ...
required optional
5
Всем вечера. Подскажите как лучше сделать. делаю на Д10 Например будет база данных на SQLite. в ней будет много таблиц. более 50шт Типа справочник. Содержать ID Name Id p...
Андрей Т 🐎
10
Карта сайта