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