[.NET] 別的語言轉 net續-補前半段

看板Visual_Basic作者 (小張)時間16年前 (2010/01/24 15:26), 編輯推噓0(0018)
留言18則, 2人參與, 最新討論串1/1
※ 引述《changjeimin (小張)》之銘言: : 請問各位前輩們,不知道這區是否請教別的語言轉換成vb.net? : 如有冒犯請逕行砍文... : 以下是 Delphi 文 想轉換 vb.net : ========================================= : const opcodecount=1036; : const opcodes: array [1..opcodecount] of topcode =( : {ok} : (mnemonic:'AAA';opcode1:eo_none;paramtype1:par_noparam;bytes:1;bt1:$37), : //no param : {ok} : (mnemonic:'AAD';opcode1:eo_none;paramtype1:par_noparam;bytes:2;bt1:$d5;bt2:$0a), : {ok} (mnemonic:'AAD';opcode1:eo_ib;paramtype1:par_im : ========================================== : 上面那段我比較不能理解要怎麼轉換成vb.net ? 原始回文 有前輩提出沒有前半段 以下就是前半段.... ================= unit Assemblerunit; interface uses windows,sysutils,imagehlp; const invalidtoken=0; const register8bit=1; const register16bit=2; const register32bit=3; const registerMM=4; const registerXMM=5; const registerST=6; const registerSreg=7; const registerCR=8; const registerDR=9; const memorylocation=10; //in case I cant find out (user forgot to say byte ptr, word ptr or dword ptr)` const memorylocation8=11; const memorylocation16=12; const memorylocation32=13; const memorylocation64=14; const memorylocation80=15; const memorylocation128=16; const value=17; //opcode part (bytes) type Textraopcode=(eo_none, eo_reg0,eo_reg1,eo_reg2,eo_reg3,eo_reg4,eo_reg5,eo_reg6,eo_reg7, // /digit eo_reg, // /r eo_cb,eo_cw,eo_cd,eo_cp, eo_ib,eo_iw,eo_id, eo_prb,eo_prw,eo_prd, eo_pi ); //parameter part type tparam=(par_noparam, //constant par_1, par_3, par_al, par_ax, par_eax, par_cl, par_dx, par_cs, par_ds, par_es, par_ss, par_fs, par_gs, //regs par_r8, par_r16, par_r32, par_mm, par_xmm, par_st, par_st0, par_sreg, par_cr, par_dr, //memorylocs par_m8, par_m16, par_m32, par_m64, par_m80, par_m128, par_moffs8, par_moffs16, par_moffs32, //regs+memorylocs par_rm8, par_rm16, par_rm32, par_r32_m16, par_mm_m32, par_mm_m64, par_xmm_m32, par_xmm_m64, par_xmm_m128, //values par_imm8, par_imm16, par_imm32, //relatives par_rel8, par_rel16, par_rel32); type topcode=record mnemonic: string; opcode1,opcode2: textraopcode; paramtype1,paramtype2,paramtype3: tparam; bytes:byte; bt1,bt2,bt3: byte; end; -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.36.33.174

01/24 18:00, , 1F
那麼你不理解的那段就是宣告新的記錄同時指定值嘛。
01/24 18:00, 1F

01/24 18:00, , 2F
完全可以轉換為VB.NET的class,或custom type。
01/24 18:00, 2F

01/24 22:20, , 3F
TYPE 方式我知道怎麼轉.NET只是就有如我一開始說的
01/24 22:20, 3F

01/24 22:20, , 4F
後半段DELPHI那種寫法我不清楚要怎用才好
01/24 22:20, 4F

01/24 22:21, , 5F
用FUNCTION方式也不對,因為這個程式碼是
01/24 22:21, 5F

01/24 22:24, , 6F
ASM TO Opcode,然而原始的程式碼也沒法完整的編譯
01/24 22:24, 6F

01/24 22:25, , 7F
只是這段程式碼總共牽扯到ASM , Delphi
01/24 22:25, 7F

01/24 22:26, , 8F
光組合語言指令就幾百種,總不是用select case
01/24 22:26, 8F

01/24 22:27, , 9F
慢慢分別吧?且又容易出錯
01/24 22:27, 9F

01/24 22:40, , 10F
那些就是建一個array of records,再輸入每一項的初值
01/24 22:40, 10F

01/24 22:40, , 11F
asm to opcode的程式那麼多人都寫過了,你伯我也寫過
01/24 22:40, 11F

01/24 22:41, , 12F
什麼幾百種的根本就不是真正的問題 你自己想一想吧
01/24 22:41, 12F

01/24 22:42, , 13F
用不用select case看原始程式怎麼寫就怎麼寫,想那麼多
01/24 22:42, 13F

01/24 23:02, , 14F
原始程式就是卡在上面我一開頭那邊不會轉.net
01/24 23:02, 14F

01/24 23:04, , 15F
至於原始程式 的判斷方式用了function方法在加上
01/24 23:04, 15F

01/24 23:04, , 16F
if endif
01/24 23:04, 16F

01/24 23:05, , 17F
至於你說的 幾百種指令不是問題,沒錯!這點我也認同
01/24 23:05, 17F

01/24 23:06, , 18F
可能因為我前面有說錯了一些話吧,才讓你這樣回答
01/24 23:06, 18F
文章代碼(AID): #1BM_OE28 (Visual_Basic)