Size: a a a

2020 April 20

A

Aiwan ╭∩╮ (òÓ,) ╭∩╮ in pro.asm
или там указатель?
источник

RG

R G in pro.asm
Amber Claes
Здравствуйте, я новичёк и ещё не знаю всех тонкостей и у меня возникла проблема при дебаге. Почему-то первая константа неправильно задаётся, хотя все остальные правильно, можете подсказать в чём может быть причина?
ну конечно если по адресу bNum дворд смотреть в отладчике то фигня получается. видишь наверху smart а потом буква d , выбери вместо d букву b
источник

AC

Amber Claes in pro.asm
Aiwan ╭∩╮ (òÓ,) ╭∩╮
в rsi утя участок памяти начиная с bNum размером в 8 байт кладется
Аа, всё, спасибо, извините что потратил время, потому что я передавал в rdi просто bNum, а printf'у нужен [bNum]..
источник
2020 April 21

ИИ

Искандер Искаков in pro.asm
[NASM x64]

global  _ft_strcmp
;int strcmp(const char *s1, const char *s2);
_ft_strcmp:
 rep  cmpsb   ; сравниваю rdi и rsi
 jne ret_ne     ; если последние сравненные символы не равны - jmp
 xor rax, rax   ; если равны - обнуляю rax, чтобы вернуть 0
 ret

ret_ne:
 jbe lower      
 ja higher    

lower:
 mov rax, -1
 ret

higher:
 mov rax, 1
 ret

Ребят, подскажите пожалуйста в чем загвоздка.
После выполнения rep cmpsb исполнение всегда уходит в jne. Даже в случае если строки были равные - не проскакивает.
Понимаю что очень наивный код, но сижу и ломаю голову почему он не работает. Есть мысль что стоп кондишн у rep такой, что исполняя эту инструкцию вообще невозможно узнать что строки были равны... Туплю
источник

A

Aiwan ╭∩╮ (òÓ,) ╭∩╮ in pro.asm
а попробуй
repe cmpsb
источник

ИИ

Искандер Искаков in pro.asm
Aiwan ╭∩╮ (òÓ,) ╭∩╮
а попробуй
repe cmpsb
с repe cmpsb
источник

ИИ

Искандер Искаков in pro.asm
(output)
источник

A

Aiwan ╭∩╮ (òÓ,) ╭∩╮ in pro.asm
но теперь то не "всегда уходит в jne"
источник

ИИ

Искандер Искаков in pro.asm
Разве? Ведь не обнулился rax в третьем случае. (когда равны строки)
источник

ИИ

Искандер Искаков in pro.asm
Ребята в IRC говорят что мне нужно сначала длинну строки узнать и ее инициализировать в rxc(ecx?)
источник

ИИ

Искандер Искаков in pro.asm
источник

A

Aiwan ╭∩╮ (òÓ,) ╭∩╮ in pro.asm
Искандер Искаков
Ребята в IRC говорят что мне нужно сначала длинну строки узнать и ее инициализировать в rxc(ecx?)
а ты этого не сделал?
источник

ИИ

Искандер Искаков in pro.asm
Нет) Я думал что просто rep\repe будет достаточно, т.к. он наткнется на \0 байт в одной из строк
источник

A

Aiwan ╭∩╮ (òÓ,) ╭∩╮ in pro.asm
в любой справке говорится что счетчик для rep это *cx. ты точно справкой пользуешься?
источник

ИИ

Искандер Искаков in pro.asm
Дико извиняюсь. Я просто до этого писал strlen и там без *cx имплементировал все, т.к. длина строки неизвестна априори. Буду читать справку.
источник

A

Aiwan ╭∩╮ (òÓ,) ╭∩╮ in pro.asm
start:
       stdcall cmpStr,str1,str2
       .if eax
               cinvoke printf,szEqual
               cinvoke _getch
       .else
               cinvoke printf,szNot_e
               cinvoke _getch
       .endif
   exit:
       invoke ExitProcess,0
;====================================
proc cmpStr,str1,str2
       stdcall LenStr,[str1]
       mov     ebx,eax
       stdcall LenStr,[str2]
       .if ebx = eax
               xor     ecx,ecx
               mov     esi,[str1]
               mov     edi,[str2]
               .repeat
                       inc     ecx
                       cmpsb
                       .if ~ ZERO?
                               mov     eax,FALSE
                               ret
                       .endif
               .until ecx = eax
               mov     eax,TRUE
               ret
       .else
               mov     eax,FALSE
               ret
       .endif

proc LenStr,str
       mov     ecx,-1
       mov     esi,[str]
       .repeat
               inc     ecx
       .until byte[esi+ecx] = 0
       mov     eax,ecx
       ret
endp
endp

section '.data' data readable writable
 str1          db "Hello world!",0
 str2          db "Hello world!",0
 szNot_e       db "Strings not equal",0
 szEqual       db "Strings equal",0
источник

A

Aiwan ╭∩╮ (òÓ,) ╭∩╮ in pro.asm
источник

A

Aiwan ╭∩╮ (òÓ,) ╭∩╮ in pro.asm
источник

ИИ

Искандер Искаков in pro.asm
Спасибо большое, даже как-то неудобно что так подробно все!
источник

A

Aiwan ╭∩╮ (òÓ,) ╭∩╮ in pro.asm
ты изобретаешь велосипед, это все есть в сети
источник