flat assembler
Message board for the users of flat assembler.
 Home   FAQ   Search   Register 
 Profile   Log in to check your private messages   Log in 
flat assembler > OS Construction > Quark MCU

Goto page 1, 2  Next
Author
Thread Post new topic Reply to topic
edfed



Joined: 20 Feb 2006
Posts: 4150
Location: https://pastebin.com/Vw7WXXf4
Quark MCU
finally, we got this so long wanted mcu.

a 32 bits, x86 compatible, low cost, low energy mcu.
Image


http://www.intel.fr/content/www/fr/fr/embedded/products/quark/mcu/d2000/overview.html


now, we have a "arduino compatible" x86 mcu.

the MCU itself costs less than 5$ in unit quantity, and down to 3.01$ in 1000 quantity.

http://www.mouser.fr/ProductDetail/Intel/DMNIAD01SLVBT-SLKMJ/?qs=%2fha2pyFaduiDim%2fTinIre77C9VPYZ82QZGSPbbATydRvgKiDAINaBLoI84PQDfnu

i think it is now or never the time to devellop a sort of system dev kit for fasm using this controler as hardware, and fasm ide as dev tool.

Smile

when i see the other products like this (teensy, adafruit, arduino, ....) i imediatelly dream about a tiny dev board with a x86 cmu onto, and a price of about 10$/20$, ready to go.

_________________
Smile fool
Post 08 Aug 2016, 09:54
View user's profile Send private message Visit poster's website Reply with quote
revolution
When all else fails, read the source


Joined: 24 Aug 2004
Posts: 15180
Location: GW170817
Nice, but it runs very slow at 32MHz only. I guess that had to happen to keep the power low. x86 instruction decoding is hard.

I don't understand the claim "32-bit microcontroller with a more robust instruction set than other entry-level microcontrollers". What do they mean by "more robust instruction set"?
Post 08 Aug 2016, 10:10
View user's profile Send private message Visit poster's website Reply with quote
shoorick



Joined: 25 Feb 2005
Posts: 1575
Location: Ukraine
OTP :S
Post 08 Aug 2016, 10:19
View user's profile Send private message Visit poster's website Reply with quote
edfed



Joined: 20 Feb 2006
Posts: 4150
Location: https://pastebin.com/Vw7WXXf4
more robust? maybe they assume that the x86 supremacy and experience in the PC world is a gage of robustness.
Post 08 Aug 2016, 10:22
View user's profile Send private message Visit poster's website Reply with quote
revolution
When all else fails, read the source


Joined: 24 Aug 2004
Posts: 15180
Location: GW170817
To me, "robust" suggests that it is more reliable when faced with conditions that might cause malfunctions/errors. Which makes no sense when applied to an instruction set.

Perhaps it is just marketing-speak for "we don't have a good reason why this would be better so we just made up some vague shit and hope that people will think it is cool".
Post 08 Aug 2016, 10:34
View user's profile Send private message Visit poster's website Reply with quote
JohnFound



Joined: 16 Jun 2003
Posts: 3440
Location: Bulgaria
I will buy some to play and then will give some impressions. IMHO, the idea is great, so let's check the implementation.
Post 08 Aug 2016, 10:44
View user's profile Send private message Visit poster's website ICQ Number Reply with quote
edfed



Joined: 20 Feb 2006
Posts: 4150
Location: https://pastebin.com/Vw7WXXf4
indeed, i don't care theirs arguments. I always wanted a x86 mcu, now it's there, let's go.
Post 08 Aug 2016, 11:29
View user's profile Send private message Visit poster's website Reply with quote
nkeck72



Joined: 28 May 2015
Posts: 83
Location: 0000:7C00
Seems like an interesting product, might get my hands on one and start working around with it.
Post 14 Sep 2016, 01:31
View user's profile Send private message Visit poster's website Reply with quote
Trinitek



Joined: 06 Nov 2011
Posts: 257
I can't seem to find any information about which instructions it supports or how it boots. Does it boot directly into protected mode or do we still have to do the jump from real mode? Are memory protection features present? Is there a GDT to load?
Post 14 Sep 2016, 02:27
View user's profile Send private message Reply with quote
jmg



Joined: 18 Sep 2016
Posts: 62

Trinitek wrote:
I can't seem to find any information about which instructions it supports or how it boots. Does it boot directly into protected mode or do we still have to do the jump from real mode? Are memory protection features present? Is there a GDT to load?



Let us know if anyone finds D2000 Opcode & Instruction Timing info.

I did find some info on the older D1000, in this pdf

quark-d1000-programmer-reference-manual.pdf ( Nov 2015)

which seems an 'engineering sample' pass 1 at the D2000, so have assumed the opcodes are very similar.


From my understanding, this is not a 'normal' i386, it has 32b opcodes, but not default 16b modes.

It does have a 32*32 -> 64 and 64/32 -> 32.32 opcodes, which could be interesting.


Strangely, intel thinks they can make only a chip, and information is optional.
They still have much to (re) learn about Microcontrollers.

There is a low cost Eval Board, and software compilers, so you can download the tools, and write some small test programs, and see what opcodes come out the other end.

Board for the MCU FND2000 SR2KF has the cryptic name of

MTFLD.CRBD.AL $14.95 from Mouser.

Addit:
When I asked intel about D2000 opcode info, some weeks back, I got a shrug.
Checking back, I see there is now mention of a
Programmer Reference Manual: Intel Quark D2000
but alas, that is behind multiple layers of login/NDA.
My standard intel account it seems, is not ' Privileged' enough ?!

*sigh*

Guys, this is a modest $3 MCU, in a sea of modest $3 MCU's, not the keys to Fort Knox !!!
If you do not want this to flop, let designers have access to the information!
Post 20 Sep 2016, 01:00
View user's profile Send private message Reply with quote
edfed



Joined: 20 Feb 2006
Posts: 4150
Location: https://pastebin.com/Vw7WXXf4
D1000 programmer manual

good news


intel wrote:

8.0 Instruction Set
The CPU uses variable length instructions which provide the most commonly used integer operations used by C/C++ compilers. The shortest instruction is 1 byte and the longest instruction is 12 bytes. The CPU does not impose address alignment restrictions on instructions.

Note:
The CPU supports a subset of the IA- 32 instruction set. Most instructions are machine code compatible with IA-32

Post 20 Sep 2016, 14:59
View user's profile Send private message Visit poster's website Reply with quote
revolution
When all else fails, read the source


Joined: 24 Aug 2004
Posts: 15180
Location: GW170817

edfed wrote:

intel wrote:
Most instructions are machine code compatible with IA-32


I wonder which ones aren't? You might need to make some macros to get the proper encoding.
Post 20 Sep 2016, 15:05
View user's profile Send private message Visit poster's website Reply with quote
Tomasz Grysztar
Assembly Artist


Joined: 16 Jun 2003
Posts: 6606
Location: Kraków, Poland

jmg wrote:
It does have a 32*32 -> 64 and 64/32 -> 32.32 opcodes, which could be interesting.

Isn't it exactly the same what 386 has?
Post 20 Sep 2016, 15:34
View user's profile Send private message Visit poster's website Reply with quote
Tomasz Grysztar
Assembly Artist


Joined: 16 Jun 2003
Posts: 6606
Location: Kraków, Poland

revolution wrote:

edfed wrote:

intel wrote:
Most instructions are machine code compatible with IA-32


I wonder which ones aren't? You might need to make some macros to get the proper encoding.

I skimmed the document and so far I have not noticed any instruction that would not have the same encoding as its IA-32 version. The differences from 386/486 (I mention 486 because BSWAP is 486 instruction and it is supported here) seem to be just missing instructions and modes. There is not PUSHFW, for example, only PUSHFD. Because of the simplified memory model there are segment registers and thus no instructions related to them. For the same reason there is also no LGDT/LLDT, but - interestingly - there is LIDT.
Post 20 Sep 2016, 15:43
View user's profile Send private message Visit poster's website Reply with quote
Trinitek



Joined: 06 Nov 2011
Posts: 257
Thanks for the link. So to answer my questions... There is no segmentation, and thus no segment registers. By extension, this also means that the processor boots into a protected mode-like state with flat addressing, and that no real mode is available.
Post 21 Sep 2016, 04:55
View user's profile Send private message Reply with quote
Trinitek



Joined: 06 Nov 2011
Posts: 257

Tomasz Grysztar wrote:
For the same reason there is also no LGDT/LLDT, but - interestingly - there is LIDT.

Well, you do want to be able to set your interrupt vectors, don't you? Wink
Post 21 Sep 2016, 05:13
View user's profile Send private message Reply with quote
Tomasz Grysztar
Assembly Artist


Joined: 16 Jun 2003
Posts: 6606
Location: Kraków, Poland

Trinitek wrote:

Tomasz Grysztar wrote:
For the same reason there is also no LGDT/LLDT, but - interestingly - there is LIDT.

Well, you do want to be able to set your interrupt vectors, don't you? Wink

Well, for example 16-bit x86 did not have LIDT and the interrupt vectors had fixed address at 0. And many microcontrollers do it similarly. Thus I think that LIDT really is a premium feature here.
Post 21 Sep 2016, 06:24
View user's profile Send private message Visit poster's website Reply with quote
edfed



Joined: 20 Feb 2006
Posts: 4150
Location: https://pastebin.com/Vw7WXXf4
ordered a D2000 arduino board, can't wait no more to develop fool for intel arduino Wink
Post 22 Sep 2016, 09:24
View user's profile Send private message Visit poster's website Reply with quote
Trinitek



Joined: 06 Nov 2011
Posts: 257

Tomasz Grysztar wrote:
Well, for example 16-bit x86 did not have LIDT and the interrupt vectors had fixed address at 0. And many microcontrollers do it similarly. Thus I think that LIDT really is a premium feature here.

This must be changing then. A lot of microcontrollers in the Quark's class also allow user configurable interrupt table locations.
Post 22 Sep 2016, 17:45
View user's profile Send private message Reply with quote
edfed



Joined: 20 Feb 2006
Posts: 4150
Location: https://pastebin.com/Vw7WXXf4
first returns about the quark D2000.

1: the board finally arrived at home after 2 mounth blocked in the airport...
2: the dev kit from intel (intel studio for microcontroller) is a fork of eclipse... 540MB of download, 1.09 GB on disk.
3: the blink example is here,

Code:

/*
 * Copyright (c2016Intel Corporation
 * All rights reserved.
 *
 * Redistribution and use in source and binary formswith or without
 * modificationare permitted provided that the following conditions are met:
 *
 * 1. Redistributions of source code must retain the above copyright notice,
 *    this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright notice,
 *    this list of conditions and the following disclaimer in the documentation
 *    and/or other materials provided with the distribution.
 * 3. Neither the name of the Intel Corporation nor the names of its
 *    contributors may be used to endorse or promote products derived from this
 *    software without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
 * AND ANY EXPRESS OR IMPLIED WARRANTIESINCLUDINGBUT NOT LIMITED TOTHE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * ARE DISCLAIMED. IN NO EVENT SHALL THE INTEL CORPORATION OR CONTRIBUTORS BE
 * LIABLE FOR ANY DIRECTINDIRECTINCIDENTALSPECIALEXEMPLARYOR
 * CONSEQUENTIAL DAMAGES (INCLUDINGBUT NOT LIMITED TOPROCUREMENT OF
 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
 * INTERRUPTIONHOWEVER CAUSED AND ON ANY THEORY OF LIABILITYWHETHER IN
 * CONTRACTSTRICT LIABILITYOR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWAREEVEN IF ADVISED OF THE
 * POSSIBILITY OF SUCH DAMAGE.
 */

/*
 * QMSI blinky app example.
 *
 * This app will blink a LED on the development platform indefinitely.
 *
 * In order for this application to work correctly on the Intel(RQuark(TM)
 * Microcontroller D2000 Development Platformjumper J3 must be set to USR.
 */

#include "clk.h"
#include "qm_gpio.h"
#include "qm_pinmux.h"

/* The following defines the pin and pin mux details for each SoC. */
#if (QUARK_SE)
#define PIN_OUT 25
#define LED_PIN_ID (QM_PIN_ID_59)
#elif(QUARK_D2000)
#define PIN_OUT 24
#define LED_PIN_ID (QM_PIN_ID_24)
#endif
#define PIN_MUX_FN (QM_PMUX_FN_0)
#define DELAY 250000UL /* 0.25 seconds. */

int main(void)
{
        static qm_gpio_port_config_t cfg;

        /* Set the GPIO pin muxing. */
        qm_pmux_select(LED_PIN_IDPIN_MUX_FN);

        /* Set the GPIO pin direction to out and write the config. */
        cfg.direction = BIT(PIN_OUT);
        qm_gpio_set_config(QM_GPIO_0, &cfg);

        /* Loop indefinitely while blinking the LED. */
        while (1) {
                qm_gpio_set_pin(QM_GPIO_0PIN_OUT);
                clk_sys_udelay(DELAY);
                qm_gpio_clear_pin(QM_GPIO_0PIN_OUT);
                clk_sys_udelay(DELAY);
        }
}




4: disassembly makes me hurt.


Code:

                           .data:00000000 55                               push   ebp
                           .data:00000001 89 e5                            mov    ebp,esp
                           .data:00000003 ba f4 01 28 00                   mov    edx,0x2801f4
                           .data:00000008 b8 c0 01 28 00                   mov    eax,0x2801c0
                           .data:0000000d 29 c2                            sub    edx,eax
                           .data:0000000f 89 d0                            mov    eax,edx
                           .data:00000011 89 c1                            mov    ecx,eax
                           .data:00000013 ba 00 00 00 00                   mov    edx,0x0
                           .data:00000018 b8 c0 01 28 00                   mov    eax,0x2801c0
                           .data:0000001d e8 d8 00 00 00                   call   0x000000fa
                           .data:00000022 b8 10 00 00 00                   mov    eax,0x10
                           .data:00000027 89 c1                            mov    ecx,eax
                           .data:00000029 ba e5 04 18 00                   mov    edx,0x1804e5
                           .data:0000002e b8 a0 01 28 00                   mov    eax,0x2801a0
                           .data:00000033 e8 b7 00 00 00                   call   0x000000ef
                           .data:00000038 b8 06 11 00 00                   mov    eax,0x1106
                           .data:0000003d e8 67 00 00 00                   call   0x000000a9
                           .data:00000042 e8 03 00 00 00                   call   0x0000004a
                           .data:00000047 90                               nop
                           .data:00000048 5d                               pop    ebp
                           .data:00000049 c3                               ret    

                           .data:0000004a 55                               push   ebp
                           .data:0000004b 89 e5                            mov    ebp,esp
                           .data:0000004d ba 00 00 00 00                   mov    edx,0x0
                           .data:00000052 b8 18 00 00 00                   mov    eax,0x18
                           .data:00000057 e8 f8 02 00 00                   call   0x00000354
                           .data:0000005c c7 05 c0 01 28 00 00 00 00 01    mov    DWORD PTR ds:0x2801c0,0x1000000
                           .data:00000066 ba c0 01 28 00                   mov    edx,0x2801c0
                           .data:0000006b b8 00 00 00 00                   mov    eax,0x0
                           .data:00000070 e8 08 01 00 00                   call   0x0000017d
                           .data:00000075 ba 18 00 00 00                   mov    edx,0x18
                           .data:0000007a b8 00 00 00 00                   mov    eax,0x0
                           .data:0000007f e8 bc 01 00 00                   call   0x00000240
                           .data:00000084 b8 90 d0 03 00                   mov    eax,0x3d090
                           .data:00000089 e8 ad 00 00 00                   call   0x0000013b
                           .data:0000008e ba 18 00 00 00                   mov    edx,0x18
                           .data:00000093 b8 00 00 00 00                   mov    eax,0x0
                           .data:00000098 e8 02 02 00 00                   call   0x0000029f
                           .data:0000009d b8 90 d0 03 00                   mov    eax,0x3d090
                           .data:000000a2 e8 94 00 00 00                   call   0x0000013b
                           .data:000000a7 eb cc                            jmp    0x00000075
                           .data:000000a9 55                               push   ebp
                           .data:000000aa 89 e5                            mov    ebp,esp
                           .data:000000ac 83 ec 04                         sub    esp,0x4
                           .data:000000af 89 45 fc                         mov    DWORD PTR [ebp-0x4],eax
                           .data:000000b2 ba 02 00 00 00                   mov    edx,0x2
                           .data:000000b7 b8 0c 00 00 00                   mov    eax,0xc
                           .data:000000bc e8 93 02 00 00                   call   0x00000354
                           .data:000000c1 8b 45 fc                         mov    eax,DWORD PTR [ebp-0x4]
                           .data:000000c4 a3 e4 01 28 00                   mov    ds:0x2801e4,eax
                           .data:000000c9 c7 05 e0 01 28 00 03 00 00 00    mov    DWORD PTR ds:0x2801e0,0x3
                           .data:000000d3 b8 02 00 02 00                   mov    eax,0x20002
                           .data:000000d8 e8 2b 00 00 00                   call   0x00000108
                           .data:000000dd ba e0 01 28 00                   mov    edx,0x2801e0
                           .data:000000e2 b8 00 00 00 00                   mov    eax,0x0
                           .data:000000e7 e8 1e 03 00 00                   call   0x0000040a
                           .data:000000ec 90                               nop
                           .data:000000ed c9                               leave  
                           .data:000000ee c3                               ret
    
                           .data:000000ef 56                               push   esi
                           .data:000000f0 57                               push   edi
                           .data:000000f1 89 c7                            mov    edi,eax
                           .data:000000f3 89 d6                            mov    esi,edx
                           .data:000000f5 f3 a4                            rep movs BYTE PTR es:[edi],BYTE PTR ds:[esi]
                           .data:000000f7 5f                               pop    edi
                           .data:000000f8 5e                               pop    esi
                           .data:000000f9 c3                               ret    

                           .data:000000fa 57                               push   edi
                           .data:000000fb 89 c7                            mov    edi,eax
                           .data:000000fd 0f b6 c2                         movzx  eax,dl
                           .data:00000100 89 fa                            mov    edx,edi
                           .data:00000102 f3 aa                            rep stos BYTE PTR es:[edi],al
                           .data:00000104 89 d0                            mov    eax,edx
                           .data:00000106 5f                               pop    edi
                           .data:00000107 c3                               ret    

                           .data:00000108 55                               push   ebp
                           .data:00000109 89 e5                            mov    ebp,esp
                           .data:0000010b 83 ec 04                         sub    esp,0x4
                           .data:0000010e 89 45 fc                         mov    DWORD PTR [ebp-0x4],eax
                           .data:00000111 81 7d fc ff ff cf 00             cmp    DWORD PTR [ebp-0x4],0xcfffff
                           .data:00000118 76 07                            jbe    0x00000121
                           .data:0000011a b8 ea ff ff ff                   mov    eax,0xffffffea
                           .data:0000011f eb 18                            jmp    0x00000139
                           .data:00000121 ba 00 00 80 b0                   mov    edx,0xb0800000
                           .data:00000126 b8 00 00 80 b0                   mov    eax,0xb0800000
                           .data:0000012b 8b 40 18                         mov    eax,DWORD PTR [eax+0x18]
                           .data:0000012e 0b 45 fc                         or     eax,DWORD PTR [ebp-0x4]
                           .data:00000131 89 42 18                         mov    DWORD PTR [edx+0x18],eax
                           .data:00000134 b8 00 00 00 00                   mov    eax,0x0
                           .data:00000139 c9                               leave  
                           .data:0000013a c3                               ret    

                           .data:0000013b 55                               push   ebp
                           .data:0000013c 89 e5                            mov    ebp,esp
                           .data:0000013e 53                               push   ebx
                           .data:0000013f 83 ec 10                         sub    esp,0x10
                           .data:00000142 89 45 ec                         mov    DWORD PTR [ebp-0x14],eax
                           .data:00000145 a1 a0 01 28 00                   mov    eax,ds:0x2801a0
                           .data:0000014a 0f af 45 ec                      imul   eax,DWORD PTR [ebp-0x14]
                           .data:0000014e 89 45 f8                         mov    DWORD PTR [ebp-0x8],eax
                           .data:00000151 0f 31                            rdtsc  
                           .data:00000153 89 45 f0                         mov    DWORD PTR [ebp-0x10],eax
                           .data:00000156 89 55 f4                         mov    DWORD PTR [ebp-0xc],edx
                           .data:00000159 90                               nop
                           .data:0000015a 0f 31                            rdtsc  
                           .data:0000015c 2b 45 f0                         sub    eax,DWORD PTR [ebp-0x10]
                           .data:0000015f 1b 55 f4                         sbb    edx,DWORD PTR [ebp-0xc]
                           .data:00000162 8b 4d f8                         mov    ecx,DWORD PTR [ebp-0x8]
                           .data:00000165 bb 00 00 00 00                   mov    ebx,0x0
                           .data:0000016a 39 da                            cmp    edx,ebx
                           .data:0000016c 72 ec                            jb     0x0000015a
                           .data:0000016e 39 da                            cmp    edx,ebx
                           .data:00000170 77 04                            ja     0x00000176
                           .data:00000172 39 c8                            cmp    eax,ecx
                           .data:00000174 72 e4                            jb     0x0000015a
                           .data:00000176 90                               nop
                           .data:00000177 83 c4 10                         add    esp,0x10
                           .data:0000017a 5b                               pop    ebx
                           .data:0000017b 5d                               pop    ebp
                           .data:0000017c c3                               ret
    
                           .data:0000017d 55                               push   ebp
                           .data:0000017e 89 e5                            mov    ebp,esp
                           .data:00000180 83 ec 10                         sub    esp,0x10
                           .data:00000183 89 45 f4                         mov    DWORD PTR [ebp-0xc],eax
                           .data:00000186 89 55 f0                         mov    DWORD PTR [ebp-0x10],edx
                           .data:00000189 83 7d f4 00                      cmp    DWORD PTR [ebp-0xc],0x0
                           .data:0000018d 74 0a                            je     0x00000199
                           .data:0000018f b8 ea ff ff ff                   mov    eax,0xffffffea
                           .data:00000194 e9 a5 00 00 00                   jmp    0x0000023e
                           .data:00000199 83 7d f0 00                      cmp    DWORD PTR [ebp-0x10],0x0
                           .data:0000019d 75 0a                            jne    0x000001a9
                           .data:0000019f b8 ea ff ff ff                   mov    eax,0xffffffea
                           .data:000001a4 e9 95 00 00 00                   jmp    0x0000023e
                           .data:000001a9 8b 45 f4                         mov    eax,DWORD PTR [ebp-0xc]
                           .data:000001ac 8b 04 85 a4 01 28 00             mov    eax,DWORD PTR [eax*4+0x2801a4]
                           .data:000001b3 89 45 fc                         mov    DWORD PTR [ebp-0x4],eax
                           .data:000001b6 8b 45 fc                         mov    eax,DWORD PTR [ebp-0x4]
                           .data:000001b9 8b 40 34                         mov    eax,DWORD PTR [eax+0x34]
                           .data:000001bc 89 45 f8                         mov    DWORD PTR [ebp-0x8],eax
                           .data:000001bf 8b 45 fc                         mov    eax,DWORD PTR [ebp-0x4]
                           .data:000001c2 c7 40 34 ff ff ff ff             mov    DWORD PTR [eax+0x34],0xffffffff
                           .data:000001c9 8b 45 f0                         mov    eax,DWORD PTR [ebp-0x10]
                           .data:000001cc 8b 10                            mov    edx,DWORD PTR [eax]
                           .data:000001ce 8b 45 fc                         mov    eax,DWORD PTR [ebp-0x4]
                           .data:000001d1 89 50 04                         mov    DWORD PTR [eax+0x4],edx
                           .data:000001d4 8b 45 f0                         mov    eax,DWORD PTR [ebp-0x10]
                           .data:000001d7 8b 50 04                         mov    edx,DWORD PTR [eax+0x4]
                           .data:000001da 8b 45 fc                         mov    eax,DWORD PTR [ebp-0x4]
                           .data:000001dd 89 50 30                         mov    DWORD PTR [eax+0x30],edx
                           .data:000001e0 8b 45 f0                         mov    eax,DWORD PTR [ebp-0x10]
                           .data:000001e3 8b 50 08                         mov    edx,DWORD PTR [eax+0x8]
                           .data:000001e6 8b 45 fc                         mov    eax,DWORD PTR [ebp-0x4]
                           .data:000001e9 89 50 38                         mov    DWORD PTR [eax+0x38],edx
                           .data:000001ec 8b 45 f0                         mov    eax,DWORD PTR [ebp-0x10]
                           .data:000001ef 8b 50 0c                         mov    edx,DWORD PTR [eax+0xc]
                           .data:000001f2 8b 45 fc                         mov    eax,DWORD PTR [ebp-0x4]
                           .data:000001f5 89 50 3c                         mov    DWORD PTR [eax+0x3c],edx
                           .data:000001f8 8b 45 f0                         mov    eax,DWORD PTR [ebp-0x10]
                           .data:000001fb 8b 50 10                         mov    edx,DWORD PTR [eax+0x10]
                           .data:000001fe 8b 45 fc                         mov    eax,DWORD PTR [ebp-0x4]
                           .data:00000201 89 50 48                         mov    DWORD PTR [eax+0x48],edx
                           .data:00000204 8b 45 f0                         mov    eax,DWORD PTR [ebp-0x10]
                           .data:00000207 8b 50 14                         mov    edx,DWORD PTR [eax+0x14]
                           .data:0000020a 8b 45 fc                         mov    eax,DWORD PTR [ebp-0x4]
                           .data:0000020d 89 50 68                         mov    DWORD PTR [eax+0x68],edx
                           .data:00000210 8b 45 f0                         mov    eax,DWORD PTR [ebp-0x10]
                           .data:00000213 8b 50 18                         mov    edx,DWORD PTR [eax+0x18]
                           .data:00000216 8b 45 f4                         mov    eax,DWORD PTR [ebp-0xc]
                           .data:00000219 89 14 85 ec 01 28 00             mov    DWORD PTR [eax*4+0x2801ec],edx
                           .data:00000220 8b 45 f0                         mov    eax,DWORD PTR [ebp-0x10]
                           .data:00000223 8b 50 1c                         mov    edx,DWORD PTR [eax+0x1c]
                           .data:00000226 8b 45 f4                         mov    eax,DWORD PTR [ebp-0xc]
                           .data:00000229 89 14 85 f0 01 28 00             mov    DWORD PTR [eax*4+0x2801f0],edx
                           .data:00000230 8b 45 fc                         mov    eax,DWORD PTR [ebp-0x4]
                           .data:00000233 8b 55 f8                         mov    edx,DWORD PTR [ebp-0x8]
                           .data:00000236 89 50 34                         mov    DWORD PTR [eax+0x34],edx
                           .data:00000239 b8 00 00 00 00                   mov    eax,0x0
                           .data:0000023e c9                               leave  
                           .data:0000023f c3                               ret    

                           .data:00000240 55                               push   ebp
                           .data:00000241 89 e5                            mov    ebp,esp
                           .data:00000243 56                               push   esi
                           .data:00000244 53                               push   ebx
                           .data:00000245 83 ec 08                         sub    esp,0x8
                           .data:00000248 89 45 f4                         mov    DWORD PTR [ebp-0xc],eax
                           .data:0000024b 89 d0                            mov    eax,edx
                           .data:0000024d 88 45 f0                         mov    BYTE PTR [ebp-0x10],al
                           .data:00000250 83 7d f4 00                      cmp    DWORD PTR [ebp-0xc],0x0
                           .data:00000254 74 07                            je     0x0000025d
                           .data:00000256 b8 ea ff ff ff                   mov    eax,0xffffffea
                           .data:0000025b eb 3b                            jmp    0x00000298
                           .data:0000025d 80 7d f0 19                      cmp    BYTE PTR [ebp-0x10],0x19
                           .data:00000261 76 07                            jbe    0x0000026a
                           .data:00000263 b8 ea ff ff ff                   mov    eax,0xffffffea
                           .data:00000268 eb 2e                            jmp    0x00000298
                           .data:0000026a 8b 45 f4                         mov    eax,DWORD PTR [ebp-0xc]
                           .data:0000026d 8b 04 85 a4 01 28 00             mov    eax,DWORD PTR [eax*4+0x2801a4]
                           .data:00000274 8b 55 f4                         mov    edx,DWORD PTR [ebp-0xc]
                           .data:00000277 8b 14 95 a4 01 28 00             mov    edx,DWORD PTR [edx*4+0x2801a4]
                           .data:0000027e 8b 1a                            mov    ebx,DWORD PTR [edx]
                           .data:00000280 0f b6 55 f0                      movzx  edx,BYTE PTR [ebp-0x10]
                           .data:00000284 be 01 00 00 00                   mov    esi,0x1
                           .data:00000289 88 d1                            mov    cl,dl
                           .data:0000028b d3 e6                            shl    esi,cl
                           .data:0000028d 89 f2                            mov    edx,esi
                           .data:0000028f 09 da                            or     edx,ebx
                           .data:00000291 89 10                            mov    DWORD PTR [eax],edx
                           .data:00000293 b8 00 00 00 00                   mov    eax,0x0
                           .data:00000298 83 c4 08                         add    esp,0x8
                           .data:0000029b 5b                               pop    ebx
                           .data:0000029c 5e                               pop    esi
                           .data:0000029d 5d                               pop    ebp
                           .data:0000029e c3                               ret    

                           .data:0000029f 55                               push   ebp
                           .data:000002a0 89 e5                            mov    ebp,esp
                           .data:000002a2 56                               push   esi
                           .data:000002a3 53                               push   ebx
                           .data:000002a4 83 ec 08                         sub    esp,0x8
                           .data:000002a7 89 45 f4                         mov    DWORD PTR [ebp-0xc],eax
                           .data:000002aa 89 d0                            mov    eax,edx
                           .data:000002ac 88 45 f0                         mov    BYTE PTR [ebp-0x10],al
                           .data:000002af 83 7d f4 00                      cmp    DWORD PTR [ebp-0xc],0x0
                           .data:000002b3 74 07                            je     0x000002bc
                           .data:000002b5 b8 ea ff ff ff                   mov    eax,0xffffffea
                           .data:000002ba eb 3d                            jmp    0x000002f9
                           .data:000002bc 80 7d f0 19                      cmp    BYTE PTR [ebp-0x10],0x19
                           .data:000002c0 76 07                            jbe    0x000002c9
                           .data:000002c2 b8 ea ff ff ff                   mov    eax,0xffffffea
                           .data:000002c7 eb 30                            jmp    0x000002f9
                           .data:000002c9 8b 45 f4                         mov    eax,DWORD PTR [ebp-0xc]
                           .data:000002cc 8b 04 85 a4 01 28 00             mov    eax,DWORD PTR [eax*4+0x2801a4]
                           .data:000002d3 8b 55 f4                         mov    edx,DWORD PTR [ebp-0xc]
                           .data:000002d6 8b 14 95 a4 01 28 00             mov    edx,DWORD PTR [edx*4+0x2801a4]
                           .data:000002dd 8b 1a                            mov    ebx,DWORD PTR [edx]
                           .data:000002df 0f b6 55 f0                      movzx  edx,BYTE PTR [ebp-0x10]
                           .data:000002e3 be 01 00 00 00                   mov    esi,0x1
                           .data:000002e8 88 d1                            mov    cl,dl
                           .data:000002ea d3 e6                            shl    esi,cl
                           .data:000002ec 89 f2                            mov    edx,esi
                           .data:000002ee f7 d2                            not    edx
                           .data:000002f0 21 da                            and    edx,ebx
                           .data:000002f2 89 10                            mov    DWORD PTR [eax],edx
                           .data:000002f4 b8 00 00 00 00                   mov    eax,0x0
                           .data:000002f9 83 c4 08                         add    esp,0x8
                           .data:000002fc 5b                               pop    ebx
                           .data:000002fd 5e                               pop    esi
                           .data:000002fe 5d                               pop    ebp
                           .data:000002ff c3                               ret    

                           .data:00000300 55                               push   ebp
                           .data:00000301 89 e5                            mov    ebp,esp
                           .data:00000303 83 ec 08                         sub    esp,0x8
                           .data:00000306 89 45 fc                         mov    DWORD PTR [ebp-0x4],eax
                           .data:00000309 89 55 f8                         mov    DWORD PTR [ebp-0x8],edx
                           .data:0000030c b8 20 00 00 00                   mov    eax,0x20
                           .data:00000311 ba 00 00 00 00                   mov    edx,0x0
                           .data:00000316 f7 75 f8                         div    DWORD PTR [ebp-0x8]
                           .data:00000319 89 c1                            mov    ecx,eax
                           .data:0000031b 8b 45 fc                         mov    eax,DWORD PTR [ebp-0x4]
                           .data:0000031e ba 00 00 00 00                   mov    edx,0x0
                           .data:00000323 f7 f1                            div    ecx
                           .data:00000325 c9                               leave  
                           .data:00000326 c3                               ret    

                           .data:00000327 55                               push   ebp
                           .data:00000328 89 e5                            mov    ebp,esp
                           .data:0000032a 83 ec 08                         sub    esp,0x8
                           .data:0000032d 89 45 fc                         mov    DWORD PTR [ebp-0x4],eax
                           .data:00000330 89 55 f8                         mov    DWORD PTR [ebp-0x8],edx
                           .data:00000333 b8 20 00 00 00                   mov    eax,0x20
                           .data:00000338 ba 00 00 00 00                   mov    edx,0x0
                           .data:0000033d f7 75 f8                         div    DWORD PTR [ebp-0x8]
                           .data:00000340 89 c1                            mov    ecx,eax
                           .data:00000342 8b 45 fc                         mov    eax,DWORD PTR [ebp-0x4]
                           .data:00000345 ba 00 00 00 00                   mov    edx,0x0
                           .data:0000034a f7 f1                            div    ecx
                           .data:0000034c 89 d0                            mov    eax,edx
                           .data:0000034e 0f af 45 f8                      imul   eax,DWORD PTR [ebp-0x8]
                           .data:00000352 c9                               leave  
                           .data:00000353 c3                               ret    

                           .data:00000354 55                               push   ebp
                           .data:00000355 89 e5                            mov    ebp,esp
                           .data:00000357 56                               push   esi
                           .data:00000358 53                               push   ebx
                           .data:00000359 83 ec 10                         sub    esp,0x10
                           .data:0000035c 89 45 ec                         mov    DWORD PTR [ebp-0x14],eax
                           .data:0000035f 89 55 e8                         mov    DWORD PTR [ebp-0x18],edx
                           .data:00000362 83 7d ec 18                      cmp    DWORD PTR [ebp-0x14],0x18
                           .data:00000366 76 0a                            jbe    0x00000372
                           .data:00000368 b8 ea ff ff ff                   mov    eax,0xffffffea
                           .data:0000036d e9 91 00 00 00                   jmp    0x00000403
                           .data:00000372 83 7d e8 03                      cmp    DWORD PTR [ebp-0x18],0x3
                           .data:00000376 76 0a                            jbe    0x00000382
                           .data:00000378 b8 ea ff ff ff                   mov    eax,0xffffffea
                           .data:0000037d e9 81 00 00 00                   jmp    0x00000403
                           .data:00000382 8b 45 ec                         mov    eax,DWORD PTR [ebp-0x14]
                           .data:00000385 ba 02 00 00 00                   mov    edx,0x2
                           .data:0000038a e8 71 ff ff ff                   call   0x00000300
                           .data:0000038f 89 45 f4                         mov    DWORD PTR [ebp-0xc],eax
                           .data:00000392 8b 45 ec                         mov    eax,DWORD PTR [ebp-0x14]
                           .data:00000395 ba 02 00 00 00                   mov    edx,0x2
                           .data:0000039a e8 88 ff ff ff                   call   0x00000327
                           .data:0000039f 89 45 f0                         mov    DWORD PTR [ebp-0x10],eax
                           .data:000003a2 ba 00 09 80 b0                   mov    edx,0xb0800900
                           .data:000003a7 b8 00 09 80 b0                   mov    eax,0xb0800900
                           .data:000003ac 8b 4d f4                         mov    ecx,DWORD PTR [ebp-0xc]
                           .data:000003af 83 c1 0c                         add    ecx,0xc
                           .data:000003b2 8b 1c 88                         mov    ebx,DWORD PTR [eax+ecx*4]
                           .data:000003b5 8b 45 f0                         mov    eax,DWORD PTR [ebp-0x10]
                           .data:000003b8 be 03 00 00 00                   mov    esi,0x3
                           .data:000003bd 88 c1                            mov    cl,al
                           .data:000003bf d3 e6                            shl    esi,cl
                           .data:000003c1 89 f0                            mov    eax,esi
                           .data:000003c3 f7 d0                            not    eax
                           .data:000003c5 21 c3                            and    ebx,eax
                           .data:000003c7 89 d9                            mov    ecx,ebx
                           .data:000003c9 8b 45 f4                         mov    eax,DWORD PTR [ebp-0xc]
                           .data:000003cc 83 c0 0c                         add    eax,0xc
                           .data:000003cf 89 0c 82                         mov    DWORD PTR [edx+eax*4],ecx
                           .data:000003d2 ba 00 09 80 b0                   mov    edx,0xb0800900
                           .data:000003d7 b8 00 09 80 b0                   mov    eax,0xb0800900
                           .data:000003dc 8b 4d f4                         mov    ecx,DWORD PTR [ebp-0xc]
                           .data:000003df 83 c1 0c                         add    ecx,0xc
                           .data:000003e2 8b 1c 88                         mov    ebx,DWORD PTR [eax+ecx*4]
                           .data:000003e5 8b 45 f0                         mov    eax,DWORD PTR [ebp-0x10]
                           .data:000003e8 8b 75 e8                         mov    esi,DWORD PTR [ebp-0x18]
                           .data:000003eb 88 c1                            mov    cl,al
                           .data:000003ed d3 e6                            shl    esi,cl
                           .data:000003ef 89 f0                            mov    eax,esi
                           .data:000003f1 09 c3                            or     ebx,eax
                           .data:000003f3 89 d9                            mov    ecx,ebx
                           .data:000003f5 8b 45 f4                         mov    eax,DWORD PTR [ebp-0xc]
                           .data:000003f8 83 c0 0c                         add    eax,0xc
                           .data:000003fb 89 0c 82                         mov    DWORD PTR [edx+eax*4],ecx
                           .data:000003fe b8 00 00 00 00                   mov    eax,0x0
                           .data:00000403 83 c4 10                         add    esp,0x10
                           .data:00000406 5b                               pop    ebx
                           .data:00000407 5e                               pop    esi
                           .data:00000408 5d                               pop    ebp
                           .data:00000409 c3                               ret    

                           .data:0000040a 55                               push   ebp
                           .data:0000040b 89 e5                            mov    ebp,esp
                           .data:0000040d 83 ec 0c                         sub    esp,0xc
                           .data:00000410 89 45 f8                         mov    DWORD PTR [ebp-0x8],eax
                           .data:00000413 89 55 f4                         mov    DWORD PTR [ebp-0xc],edx
                           .data:00000416 83 7d f8 01                      cmp    DWORD PTR [ebp-0x8],0x1
                           .data:0000041a 76 0a                            jbe    0x00000426
                           .data:0000041c b8 ea ff ff ff                   mov    eax,0xffffffea
                           .data:00000421 e9 bd 00 00 00                   jmp    0x000004e3
                           .data:00000426 83 7d f4 00                      cmp    DWORD PTR [ebp-0xc],0x0
                           .data:0000042a 75 0a                            jne    0x00000436
                           .data:0000042c b8 ea ff ff ff                   mov    eax,0xffffffea
                           .data:00000431 e9 ad 00 00 00                   jmp    0x000004e3
                           .data:00000436 8b 45 f8                         mov    eax,DWORD PTR [ebp-0x8]
                           .data:00000439 8b 04 85 a8 01 28 00             mov    eax,DWORD PTR [eax*4+0x2801a8]
                           .data:00000440 89 45 fc                         mov    DWORD PTR [ebp-0x4],eax
                           .data:00000443 8b 45 fc                         mov    eax,DWORD PTR [ebp-0x4]
                           .data:00000446 c7 40 0c 00 00 00 00             mov    DWORD PTR [eax+0xc],0x0
                           .data:0000044d 8b 45 fc                         mov    eax,DWORD PTR [ebp-0x4]
                           .data:00000450 c7 40 0c 80 00 00 00             mov    DWORD PTR [eax+0xc],0x80
                           .data:00000457 8b 45 f4                         mov    eax,DWORD PTR [ebp-0xc]
                           .data:0000045a 8b 40 04                         mov    eax,DWORD PTR [eax+0x4]
                           .data:0000045d 25 00 00 ff 00                   and    eax,0xff0000
                           .data:00000462 c1 e8 10                         shr    eax,0x10
                           .data:00000465 89 c2                            mov    edx,eax
                           .data:00000467 8b 45 fc                         mov    eax,DWORD PTR [ebp-0x4]
                           .data:0000046a 89 50 04                         mov    DWORD PTR [eax+0x4],edx
                           .data:0000046d 8b 45 f4                         mov    eax,DWORD PTR [ebp-0xc]
                           .data:00000470 8b 40 04                         mov    eax,DWORD PTR [eax+0x4]
                           .data:00000473 25 00 ff 00 00                   and    eax,0xff00
                           .data:00000478 c1 e8 08                         shr    eax,0x8
                           .data:0000047b 89 c2                            mov    edx,eax
                           .data:0000047d 8b 45 fc                         mov    eax,DWORD PTR [ebp-0x4]
                           .data:00000480 89 10                            mov    DWORD PTR [eax],edx
                           .data:00000482 8b 45 f4                         mov    eax,DWORD PTR [ebp-0xc]
                           .data:00000485 8b 40 04                         mov    eax,DWORD PTR [eax+0x4]
                           .data:00000488 0f b6 d0                         movzx  edx,al
                           .data:0000048b 8b 45 fc                         mov    eax,DWORD PTR [ebp-0x4]
                           .data:0000048e 89 90 c0 00 00 00                mov    DWORD PTR [eax+0xc0],edx
                           .data:00000494 8b 45 f4                         mov    eax,DWORD PTR [ebp-0xc]
                           .data:00000497 8b 10                            mov    edx,DWORD PTR [eax]
                           .data:00000499 8b 45 fc                         mov    eax,DWORD PTR [ebp-0x4]
                           .data:0000049c 89 50 0c                         mov    DWORD PTR [eax+0xc],edx
                           .data:0000049f 8b 45 fc                         mov    eax,DWORD PTR [ebp-0x4]
                           .data:000004a2 c7 40 10 00 00 00 00             mov    DWORD PTR [eax+0x10],0x0
                           .data:000004a9 8b 45 f4                         mov    eax,DWORD PTR [ebp-0xc]
                           .data:000004ac 8a 40 08                         mov    al,BYTE PTR [eax+0x8]
                           .data:000004af 84 c0                            test   al,al
                           .data:000004b1 74 11                            je     0x000004c4
                           .data:000004b3 8b 45 fc                         mov    eax,DWORD PTR [ebp-0x4]
                           .data:000004b6 8b 40 10                         mov    eax,DWORD PTR [eax+0x10]
                           .data:000004b9 83 c8 22                         or     eax,0x22
                           .data:000004bc 89 c2                            mov    edx,eax
                           .data:000004be 8b 45 fc                         mov    eax,DWORD PTR [ebp-0x4]
                           .data:000004c1 89 50 10                         mov    DWORD PTR [eax+0x10],edx
                           .data:000004c4 8b 45 fc                         mov    eax,DWORD PTR [ebp-0x4]
                           .data:000004c7 c7 40 08 b7 00 00 00             mov    DWORD PTR [eax+0x8],0xb7
                           .data:000004ce 8b 45 fc                         mov    eax,DWORD PTR [ebp-0x4]
                           .data:000004d1 8b 40 04                         mov    eax,DWORD PTR [eax+0x4]
                           .data:000004d4 0c 80                            or     al,0x80
                           .data:000004d6 89 c2                            mov    edx,eax
                           .data:000004d8 8b 45 fc                         mov    eax,DWORD PTR [ebp-0x4]
                           .data:000004db 89 50 04                         mov    DWORD PTR [eax+0x4],edx
                           .data:000004de b8 00 00 00 00                   mov    eax,0x0
                           .data:000004e3 c9                               leave  
                           .data:000004e4 c3                               ret    

                           .data:000004e5 20 00                            and    BYTE PTR [eax],al
                           .data:000004e7 00 00                            add    BYTE PTR [eax],al
                           .data:000004e9 00 0c 00                         add    BYTE PTR [eax+eax*1],cl
                           .data:000004ec b0 00                            mov    al,0x0
                           .data:000004ee 20 00                            and    BYTE PTR [eax],al
                           .data:000004f0 b0 00                            mov    al,0x0
                           .data:000004f2 24 00                            and    al,0x0
                           .data:000004f4 b0                               .byte 0xb0


Post 27 Dec 2016, 21:28
View user's profile Send private message Visit poster's website Reply with quote
Display posts from previous:
Post new topic Reply to topic

Jump to:  
Goto page 1, 2  Next

< Last Thread | Next Thread >

Forum Rules:
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
You cannot attach files in this forum
You can download files in this forum


Powered by phpBB © 2001-2005 phpBB Group.

Main index   Download   Documentation   Examples   Message board
Copyright © 2004-2016, Tomasz Grysztar.