.globl _main
_main:
  # pierwsza wersja - wstawiam po prostu wszystko inline
  lea rdi, [rip + L_.hello]
  xor rax, rax
  call _printf

  # druga wersja - robię calla
  call _hello

  xor rax, rax
  ret

_hello:
  lea rdi, [rip + L_.hello]
  xor rax, rax
  call _printf
  ret

L_.hello: .asciz "Hello, world\n"
Takie pytanko może mondre może gupie, nwm. Pierwsza wersja rzuca segfaultem, dopiero jak opakuję w push rdi ... pop rdi, to
Elko mirki z #programowanie w #asm #assembler - mam problem, pisze sobie funkcje do programu 64bitowego w #nasm, jako argument przyjmuje adres do tablicy floatow no i chce załadować jej fragment do ymm0. Używam instrukcji vmovaps, ale zamiast przesłać się 256bity przesyłają się tylko 128. Po prostu zamiast 8 floatow lądują się 4, dane w tablicy są na pewno ok. Ma ktoś pomysł w którą stronę szukać problemu?
#programowanie #asm #assembler
Fragmenty 13:59-14:02. Pomijając babol z używaniem liczydeł u suwaków logarytmicznych to interesuje mnie ten kod co tam jest. To na pewno nie jest nagranie z epoki, bo te rejestry to nawet ja znam i to chyba intelowska architektura 16-bitowa, która pojawiła się ponad 20 lat po wydarzeniach na filmie. Ktoś coś powie na ten temat?
p.....o - #programowanie #asm #assembler
Fragmenty 13:59-14:02. Pomijając babol z uż...
#programowanie #assembler #assembly #asm #masm

Mam pytanie dot. RDTSC.

CPUID // wmusza zakończenie poprzednich (serializuje)
RDTSC // odczytuje liczbe cykli
MOV ECX,EAX // przechowuje w ECX
CALL Func
RDTSC // po wywołaniu odczytuje kolejny raz licznik
SUB EAX,ECX // różnica powinna dać ile cykli potrzebuje na wykonanie Func

Powyższy kod wykonuje kilkukrotnie. Pierwszy wynik jest zawyżony co wynika z dokumentacji, a potem mam bardzo zbliżone wyniki i tu moje pytanie:

1. Czy
@ManOfGlass: func nie zmienia ECX nie?
różnice mogą być z takich powodów:
jesteś nie sam więc dolicz czas przełączania kontekstu
możesz odczytywać z różnych pamięci (wolny DRAM i szybki SRAM)

ale że moja odpowiedź jest troszkę "z dupy" bo nie jestem pewien tego co piszę a jedynie przypuszczam. prosił bym zawołać jak ktoś ogarnięty odpowie. lub co było by fajniejsze, może na stacku zapytaj też
  • Odpowiedz
#programowanie #cpp #asm

Ja bardzo przepraszam, że kaleczę i w ogóle dokumentacje powinienem ogarnąć wpierw.
Ale zainteresowało mnie tylko coś i chciałem sprawdzić.

Jadę więc:
asm("MOV AH,09H");

i mam "too many memory references for 'mov'"

Ktoś, coś? Naprowadzi może?
Tutoriale Assemblera x86 lista zbiorcza 200 filmików
https://www.youtube.com/playlist?list=PLLwUwn2c6SngPFp4-QLeUPupYiI2c1iz9
Tutki ASM po polsku od Gynvael
https://www.youtube.com/playlist?list=PL7CA8FE35B665D4DD
Jak ktoś chce tutki OllyDBG czy IDA to niech da znać. Pozdrawiam grupę ratowania niskiego poziomu.
#komputery #tutorial #poradnik #nauka #programowanie #assembler #asm #it #liganauki #gruparatowaniapoziomu #zielonek1000
zielonek1000 - Tutoriale Assemblera x86 lista zbiorcza 200 filmików
https://www.yout...

źródło: comment_tnJAuRE2Ym29SfHaLZQN1YdhSTHWPALL.jpg

Pobierz
Mireczki muszę w assemblerze napisać program, który będzie wczytywał ciąg znaków >c+z> i wypisywał najbardziej zagnieżdżony, ale bladego pojęcia nie mam jak się za to zabrać w tym języku. Ktoś mógłby mi objaśnić, powiedzieć czym się zainteresować itd? Mam czas do piątku.
Nie oczekuje gotowca tylko pomocy ( ͡° ʖ̯ ͡°)

#assembler #programowanie #asm
@Roballo: no to za każdym razem jak wchodzisz w nowy poziom zagnieżdżenia, cofaj wskaźnik, którym piszesz, do początku. początek i tak musisz mieć gdzieś zachowany, bo musisz wiedzieć skąd pisać
  • Odpowiedz
@leoha: Wiem, wystarczy
ISR( INT0_vect, ISR_NAKED ){ asm volatile("reti");};
ale wtedy muszę sam pilnować rejestrów i odkładać je na stos i później ściągać. Chociaż nie wydaje mi się, że kiedyś użyje ich wszystkich na raz.
  • Odpowiedz
Mirki znające #asm #assembler #masm


Piszę sobie radix sort w MASM i natrafiam na 2 problemy:

1. Podczas niektórych wywołań leci błąd:
Run-Time Check Failure #2 - Stack around the variable 'firstarray' was corrupted._
Nie widzę szczególnego błędu u mnie w kodzie, jakieś sugestie?

2. Elementy w "posortowanej" tablicy są pozamieniane parami, a wydaje mi się że algorytm jest poprawny. Pewnie świeże spojrzenie znalazłoby błąd w tym kodzie.


Kod:
main.cpp
radixsort.asm
@sosnnaa: sorry że tak późno odpisuję. Widzę tu dwa błędy:
- nie wszystkie rejestry, z których korzystasz zapisujesz w prologu funkcji. Musisz to robić inaczej funkcje, które wywołują radixsort nie będą działać poprawnie
- array + leftoneindex - to jest ok w C. Natomiast w asm 'add edx, esi' zadziałałoby dla tablic charów, a tym przypadku masz tablicę intów więc musisz to robić raczej w stylu edx + esi*4
  • Odpowiedz
Nie zechciałby by mi ktoś pomóc? Mam dwa programy, jeden do obsługi klawiatury sekwencyjnej, a drugi do wyświetlacza 7seg. Chciałbym to jakoś połączyć, ale ni cholery mi to nie wychodzi. Czytałem Podstawy Programowania Mikrokontrolera 8051 ale niestety nic mi to nie pomogło. Jakby ktoś się podjął pomocy to zapłacę.
#asm #asembler #programowanie