progi - Java

VF vf at elte.hu
Fri Apr 2 14:35:40 CEST 2004


Thus spake Rancz Lajos <csiga at sch.bme.hu>:

> Haliho!

Hi!

> Teljesen kellemes kis vita alakult ki :-).

Huh... Nem mindig ilyen kellemes hangvetelu :)

> Alapvetoen azok a cuccok amik ASM-ben vannak, nagyon ki vannak
> optimalizalva, de nem tulsagosan bonyulultak. Pl. a DSPs algoritmusok,
> amiknek gyorsnak kell lenni, ASmben vannak de ritkan hosszabbak par szaz
> sornal. Egyszeruen ezek a nyelvek masra valok. ASM-ben, C-ben nem lehet -
> vagy legalabbis nagyon nehez -- bonyolult rendszereket epiteni. Egyszeru,
> primitiv allapotgepes cuccokkal elboldogulsz, de bonyolultat kell
> csinalni, akkor nem hasznalhatok.

C-ben szerintem lehet, az nem olyan rossz nyelv. Sot asm-ben is.
Az valoban egy kicsit huzos :) De ugyanazokat a strukturakat
megcsinalhatod. Makrok, fuggvenyek, objektumok, stb... Nem problema.
A program tokeletesen attekintheto lesz, viszont nem standard, meg
kell tanulni a hasznalt epitoelemeket (makrok, fuggvenyek stb...),
ugy, mint egy magasszintu nyelv elemeit. De ha ezeket sikerult
megerteni, utana ugyanugy olvashato a kod, mint ha Java vagy egyeb lenne...

Ha pedig van egy rendszer, melyben van 3-4 durva fuggveny, melyeket
mindenkepp erdemes asm-ben optimalizalni, es az egeszhez van nemi
korites, user interface es hasonlok, egyszerubb azt is megirni asm-ben,
mint egyszerre ket nyelvet hasznalni. Nem elvi, csak praktikussagi
okokbol, a fejlesztorendszerek benasagai es hasonlok miatt.

Ha nem haraxotok, egy rovid assembly kod kovetkezik:

initgui    move.l    dosbase(a5),a6    ;load icon
    jsr    _LVOGetProgramDir(a6)
    move.l    d0,d1
    jsr    _LVOCurrentDir(a6)
    move.l    d0,-(sp)
    move.l    icobase(a5),a6
    lea    progname,a0
    jsr    _LVOGetDiskObject(a6)
    move.l    d0,gui_icon(a5)
    move.l    dosbase(a5),a6
    move.l    (sp)+,d1
    jsr    _LVOCurrentDir(a6)

    move.l    excbase(a5),a6    ;tag memory
    move.l    TAG_SPACE_LONG,d0
    moveq    #MEMF_ANY,d1
    jsr    _LVOAllocVec(a6)
    move.l    d0,gui_tagspace(a5)
    beq.b    .err

    move.l    muibase(a5),a6    ;create our private class
    sub.l    a0,a0    ;base: 0
    lea    MUIC_Slider_s(pc),a1    ;supername
    sub.l    a2,a2    ;supermcc: 0
    lea    sliderdisp(pc),a3    ;dispfunc
    moveq    #od_size,d0    ;datasize
    jsr    _LVOMUI_CreateCustomClass(a6)
    move.l    d0,gui_myslidermcc(a5)
    beq.b    .err2

    sub.l    a0,a0    ;base: 0
    lea    MUIC_Group_s(pc),a1    ;supername
    sub.l    a2,a2    ;supermcc: 0
    lea    bodydisp(pc),a3    ;dispfunc
    moveq    #bo_size,d0    ;datasize
    jsr    _LVOMUI_CreateCustomClass(a6)
    move.l    d0,gui_mybodymcc(a5)
    bne.b    .ok

    move.l    gui_myslidermcc(a5),a0    ;hiba! class torlese
    jsr    _LVOMUI_DeleteCustomClass(a6)
    clr.l    gui_myslidermcc(a5)
.err2    move.l    excbase(a5),a6
    move.l    gui_tagspace(a5),a1
    clr.l    gui_tagspace(a5)
    jsr    _LVOFreeVec(a6)
.err    clr.l    d0
    rts

.ok    move.l    gui_myslidermcc(a5),a0
    move.l    mcc_Class(a0),gui_mysliderclass(a5)
    move.l    gui_mybodymcc(a5),a0
    move.l    mcc_Class(a0),gui_mybodyclass(a5)

    move.l    gui_tagspace(a5),a4

; gui description

 ApplicationObject
  MUIT MUIA_Application_Author,guit_author
  MUIT MUIA_Application_Base,guit_base
  MUIT MUIA_Application_Title,guit_title
  MUIT MUIA_Application_Version,guit_version
  MUIT MUIA_Application_Copyright,guit_copyright
  MUIT MUIA_Application_Description,guit_desc
  MUIT MUIA_Application_SingleTask,TRUE
  MUIT MUIA_Application_DiskObject
  MUIT2 gui_icon(a5)
  MUIT MUIA_Application_BrokerHook,gui_brokerhook
  SubWindowi
  WindowObject
   MUIT MUIA_Window_Open,FALSE
   MUIT MUIA_Window_Title,guit_wintit
   MUIT MUIA_Window_ID,"0win"
   MUIT MUIA_Window_AppWindow,TRUE
   MUIT MUIA_Window_NoMenus,TRUE
   MUIT MUIA_Window_ScreenTitle,guit_screentit
   ;MUIT MUIA_Window_SizeGadget,FALSE
   ;MUIT MUIA_Window_Width,99;MUIV_Window_Width_MinMax
   WindowContentsi
   RegisterObject
    MUIT MUIA_Register_Titles,guia_regtitles
    ;MUIT MUIA_Group_SameWidth,TRUE
    MUIT MUIA_CycleChain,1
    MUIT MUIA_Group_ActivePage
    clr.l   d2
    move.b  startpage,d2
    MUIT2 d2

; info page

    Childi GroupObject
     Childi HGroup
      ;MUIT MUIA_Frame,MUIV_Frame_Button
      Childi BodychunkObject    ;VSS logo
       MUIT MUIA_Bodychunk_Body,im_vsslogo
       MUIT MUIA_Bodychunk_Depth,3
       ;MUIT MUIA_Bodychunk_Compression,1
       ;MUIT MUIA_Bodychunk_Masking,0
       MUIT MUIA_FixWidth,55
       MUIT MUIA_FixHeight,31
       MUIT MUIA_Bitmap_Width,55
       MUIT MUIA_Bitmap_Height,31

[..]

popup    seti    gui_window(a5),#MUIA_Window_Open,#TRUE
    seti    gui_app(a5),#MUIA_Application_Iconified,#FALSE
    DoMethod    gui_window(a5),#MUIM_Window_ToFront
    DoMethod    gui_window(a5),#MUIM_Window_ScreenToFront
    rts

>     Lajos

-- 
Valenta Ferenc <vf at elte.hu>   Visit me at http://ludens.elte.h u/~vf/
"Microsoft Certified Angry OS Rebooter"


____________________________________________________________________
Miert fizetsz az internetert? Korlatlan, ingyenes internet hozzaferes a FreeStarttol.
Probald ki most! http://www.freestart.hu



More information about the Elektro mailing list