作者changjeimin (小張)
看板Visual_Basic
標題[.NET] 別的語言轉 net續-補前半段
時間Sun Jan 24 15:26:04 2010
※ 引述《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
1F:→ MOONRAKER:那麼你不理解的那段就是宣告新的記錄同時指定值嘛。 01/24 18:00
2F:→ MOONRAKER:完全可以轉換為VB.NET的class,或custom type。 01/24 18:00
3F:→ changjeimin:TYPE 方式我知道怎麼轉.NET只是就有如我一開始說的 01/24 22:20
4F:→ changjeimin:後半段DELPHI那種寫法我不清楚要怎用才好 01/24 22:20
5F:→ changjeimin:用FUNCTION方式也不對,因為這個程式碼是 01/24 22:21
6F:→ changjeimin:ASM TO Opcode,然而原始的程式碼也沒法完整的編譯 01/24 22:24
7F:→ changjeimin:只是這段程式碼總共牽扯到ASM , Delphi 01/24 22:25
8F:→ changjeimin:光組合語言指令就幾百種,總不是用select case 01/24 22:26
9F:→ changjeimin:慢慢分別吧?且又容易出錯 01/24 22:27
10F:→ MOONRAKER:那些就是建一個array of records,再輸入每一項的初值 01/24 22:40
11F:→ MOONRAKER:asm to opcode的程式那麼多人都寫過了,你伯我也寫過 01/24 22:40
12F:→ MOONRAKER:什麼幾百種的根本就不是真正的問題 你自己想一想吧 01/24 22:41
13F:→ MOONRAKER:用不用select case看原始程式怎麼寫就怎麼寫,想那麼多 01/24 22:42
14F:→ changjeimin:原始程式就是卡在上面我一開頭那邊不會轉.net 01/24 23:02
15F:→ changjeimin:至於原始程式 的判斷方式用了function方法在加上 01/24 23:04
16F:→ changjeimin:if endif 01/24 23:04
17F:→ changjeimin:至於你說的 幾百種指令不是問題,沒錯!這點我也認同 01/24 23:05
18F:→ changjeimin:可能因為我前面有說錯了一些話吧,才讓你這樣回答 01/24 23:06