Почему pop fs:[0] ассемблируется в POP WORD PTR FS:[0]?

Тема в разделе "WASM.WIN32", создана пользователем Asterix, 8 окт 2004.

  1. Asterix

    Asterix New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2003
    Сообщения:
    3.576
    Subj

    Понятно что можно размерность указать явно, но ведь компилятор

    даже не ругается, так можно и налететь..


    Код (Text):
    1. #define WIN32_LEAN_AND_MEAN
    2. #include <windows.h>
    3.  
    4. #pragma comment(linker, "/ENTRY:start")
    5. #pragma comment(linker, "/opt:nowin98")
    6. #pragma comment(lib, "kernel32.lib")
    7.  
    8.  
    9. __declspec(naked) void start(void)
    10. {
    11.    __asm
    12.    {
    13.      push  fs:[0]
    14.      pop   fs:[0]
    15.    }
    16.    ExitProcess(0);
    17. }
     
  2. q_q

    q_q New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2003
    Сообщения:
    1.706
    Asterix

    компилятор даже не ругается

    vct предупреждает, правда не по поводу word ptr, а Compiler Warning (Level 1) C4733.
     
  3. Asterix

    Asterix New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2003
    Сообщения:
    3.576
    Я компилировал в 6-й студии..
     
  4. nice

    nice New Member

    Публикаций:
    0
    Регистрация:
    13 июн 2003
    Сообщения:
    42
    Адрес:
    Russia
    Asterix

    Кстати Hiew так же поступает, заметил ещё когда краденные байты востанавливал :)
     
  5. S_T_A_S_

    S_T_A_S_ New Member

    Публикаций:
    0
    Регистрация:
    27 окт 2003
    Сообщения:
    1.754
    Это ещё что :)



    Оказывается, что для MSVC (cl ver 13.10) код
    Код (Text):
    1. or      [ecx][0*edx], ebx
    это тоже самое, что и
    Код (Text):
    1. or      [ecx][1*edx], ebx
    8-()

    MASM такой же тупой в области арифметики, но хотя бы ругается: error A2083: invalid scale value