Pay for the code
-
Делаю переименование NTFS. Скорее всего срок 0.5-3 месяца. Заинтересован в остальном, но выглядит сложно.
Привет есть работка на заказ ?
Там сложность в том, что нужно обеспечить надёжность операции. Для переименования нужно создать новый индекс и удалить старый. С удалением могут быть проблемы по пункту 3 viewtopic.php?p=67988#p67988
То-есть, что делать если новый индекс создан, а старый удалить не удаётся? Нужно сначала исправить пункт 3, а там читать пункт 1.
What task can you give me and can we somehow interact through instant messengers, such as Telegram?
You can pick any task mentioned in the opening post. Feel free to ask questions here or in our telegram group t.me/kolibri_os
I have finished a QR code generator and would like to claim the bounty.
I am unfamiliar with code submission processes. Should I post the code on pastebin and share a link to it?
I am unfamiliar with code submission processes. Should I post the code on pastebin and share a link to it?
Hello,
I am the mentor for the QR task. You can share the code any way you prefer, e.g. attach to your post in this thread, post to github, request a new account on https://git.kolibrios.org in PM and push it there, anything else.
The payment was declared as $100-200 depending on the amount of work done. Please, specify what has been done (or not done): QR code variants, a kernel function, etc. Any tests?
I hope you enjoyed the task. The screenshot looks great
I am the mentor for the QR task. You can share the code any way you prefer, e.g. attach to your post in this thread, post to github, request a new account on https://git.kolibrios.org in PM and push it there, anything else.
The payment was declared as $100-200 depending on the amount of work done. Please, specify what has been done (or not done): QR code variants, a kernel function, etc. Any tests?
I hope you enjoyed the task. The screenshot looks great
Implementing the algorithm was fun, however some of the debugging process was dreadful. It was only today that I found out the debugger can load symbols.
This is my first significant project in ASM.
I didn't make a kernel function.
Some last-minute tests are included around line 155; they all decode successfully when I scan them. I did not test any character encodings other than UTF8 and cp1251.
This program implements a subset of the features of QR Code, or QR Code Model 2, as defined in ISO/IEC 18004:2015. This program does not produce Micro QR Code, nor QR Code Model 1.
Out of the default encodable character sets, namely numeric, alphanumeric, byte, and kanji, kanji is not supported.
Reflectance reversal (color inversion) is not implemented in this program. This means QR codes are only produced with dark features on a white background. Mirror imaging is also not implemented.
This program does not provide a way to select the desired level of error correction; instead it finds the smallest size of QR code with the highest level of error correction that is able to contain the message.
Extended Channel Interpretation is partially supported, however this program does not allow using more than one character set in each message, nor mixing modes. This program automatically escapes any backslashes found in an ECI message.
ECI assignment numbers greater than 127 are not supported.
Structured append mode is not implemented.
FNC1 mode is not implemented.
Some non-trivial upgrades to this program would be:
In-place interleaving of data codewords and error correction codewords, to reduce memory usage.
Allowing the user to define size/shape of modules of the QR code, for use in high-resolution displays or displays with non-square pixels.
This is my first significant project in ASM.
I didn't make a kernel function.
Some last-minute tests are included around line 155; they all decode successfully when I scan them. I did not test any character encodings other than UTF8 and cp1251.
This program implements a subset of the features of QR Code, or QR Code Model 2, as defined in ISO/IEC 18004:2015. This program does not produce Micro QR Code, nor QR Code Model 1.
Out of the default encodable character sets, namely numeric, alphanumeric, byte, and kanji, kanji is not supported.
Reflectance reversal (color inversion) is not implemented in this program. This means QR codes are only produced with dark features on a white background. Mirror imaging is also not implemented.
This program does not provide a way to select the desired level of error correction; instead it finds the smallest size of QR code with the highest level of error correction that is able to contain the message.
Extended Channel Interpretation is partially supported, however this program does not allow using more than one character set in each message, nor mixing modes. This program automatically escapes any backslashes found in an ECI message.
ECI assignment numbers greater than 127 are not supported.
Structured append mode is not implemented.
FNC1 mode is not implemented.
Some non-trivial upgrades to this program would be:
In-place interleaving of data codewords and error correction codewords, to reduce memory usage.
Allowing the user to define size/shape of modules of the QR code, for use in high-resolution displays or displays with non-square pixels.
- Attachments
-
-
QRclipboard.asm (67.53 KiB)Downloaded 13 times
-
Your QR related code looks like a disassembly of some C code you didn't mention. What was the reference code? Doesn't seem to be a 'from scratch' implementation as requested.
If it is your from scratch implementation, you should be able to explain the logic behind this part of your code.
If it is your from scratch implementation, you should be able to explain the logic behind this part of your code.
Code: Select all
mask11:
mov eax, DWORD [ebp - 8]
and eax, 1
jne mask27
mov DWORD [ebp - 28], 1
jmp mask28
mask27:
and DWORD [ebp - 28], 0
mask28:
mov al, BYTE [ebp - 28]
mov BYTE [ebp - 1], al
jmp mask8
mask12:
mov eax, DWORD [ebp - 12]
cdq
push 3
pop ecx
idiv ecx
test edx, edx
jne mask29
mov DWORD [ebp - 32], 1
jmp mask30
mask29:
and DWORD [ebp - 32], 0
mask30:
mov al, BYTE [ebp - 32]
mov BYTE [ebp - 1], al
jmp mask8
mask13:
mov eax, DWORD [ebp - 8]
add eax, DWORD [ebp - 12]
cdq
push 3
pop ecx
idiv ecx
test edx, edx
jne mask31
mov DWORD [ebp - 36], 1
jmp mask32
mask31:
and DWORD [ebp - 36], 0
mask32:
mov al, BYTE [ebp - 36]
mov BYTE [ebp - 1], al
jmp mask8
Yes, most of the code is taken from the ASM output of a compiler with optimizations disabled, as I found that with optimizations enabled, the code would work erratically or not at all when tested in KolibriOS. In the makeQR function I kept the names of local variables, whereas in the ancillary functions I did not.
The original C++ code, which I did write myself, can be seen here: https://pastebin.com/wazUKhQR
After writing the C++ code to understand the algorithm, I tried to write it again in FASM from scratch. Although I made some progress, eventually I got stuck in debugging. That's why I decided to just use the output of the C++ compiler.
The quoted code is part of the masking function, specifically the patterns 1, 2, and 3.
In pattern 1, which is between labels mask11 and mask12, the row number is ANDed with 1 as a substitute of the "modulo 2" operation. According to whether the result is 0 or 1, a 1 or 0 respectively is stored in an unnecessary local variable (created by the compiler), then the content of that local variable is stored in another local variable which I call "flip" that indicates if the current pixel of the QR code should be inverted or not.
In pattern 2, between labels mask12 and mask13, the column number is converted to a quadword and divided by 3. Another unnecessary local variable is given a 1 or 0 according to whether the remainder of the division is 0 or not. The content of that local variable is then stored in the "flip" variable.
In pattern 3, the row and column numbers are added together, and the result is treated much like the column number in the previous pattern, involving yet another unnecessary local variable.
The original C++ code, which I did write myself, can be seen here: https://pastebin.com/wazUKhQR
After writing the C++ code to understand the algorithm, I tried to write it again in FASM from scratch. Although I made some progress, eventually I got stuck in debugging. That's why I decided to just use the output of the C++ compiler.
The quoted code is part of the masking function, specifically the patterns 1, 2, and 3.
In pattern 1, which is between labels mask11 and mask12, the row number is ANDed with 1 as a substitute of the "modulo 2" operation. According to whether the result is 0 or 1, a 1 or 0 respectively is stored in an unnecessary local variable (created by the compiler), then the content of that local variable is stored in another local variable which I call "flip" that indicates if the current pixel of the QR code should be inverted or not.
In pattern 2, between labels mask12 and mask13, the column number is converted to a quadword and divided by 3. Another unnecessary local variable is given a 1 or 0 according to whether the remainder of the division is 0 or not. The content of that local variable is then stored in the "flip" variable.
In pattern 3, the row and column numbers are added together, and the result is treated much like the column number in the previous pattern, involving yet another unnecessary local variable.
It's great the reference C++ code is written by you. I do value your effort to study the algorithm. That said, I will be ready to pay only for fasm code written from scratch. As you understand, disassembly is almost impossible to maintain, fix and improve. You are welcome to ask questions on how to do things in fasm for KolibriOS but you can't get money for disassembly, sorry.
If you want to learn more about KolibriOS and fasm, people here will share their knowledge. This way you will improve your skills, rewrite your algorithm from scratch in fasm eventually and get paid. This will take some time though.
If you want to learn more about KolibriOS and fasm, people here will share their knowledge. This way you will improve your skills, rewrite your algorithm from scratch in fasm eventually and get paid. This will take some time though.
Who is online
Users browsing this forum: No registered users and 1 guest