这是一个简易的MIPS反汇编器,具体参考: http://blog.csdn.net/htttw/article/details/7727673
2022-07-29 15:51:20 8KB MIPS 反汇编
1
功能介绍 1、支持变量内联汇编(类成员变量/自定义数据类型成员变量暂时不支持) 2、支持识别变量大小自动生成dword/word/byte ptr 3、支持子程序调用(包括类函数地址),直接操作真实的子程序地址,并非易语言包装的那层 4、支持naked,cdecl函数 5、支持断点调试 注意事项 目前版本仅支持5.93版本,其他版本后续可能会去支持暂时不支持模块编译
2022-06-23 11:05:22 1.8MB 易语言内联汇编器
1
RISC-V 32i CPU和汇编器 这是HKUST ELEC-5140高级计算机体系结构的课程项目材料之一,鼓励学生增强结构模型并改善其性能。 该项目正在运行,由维护。 任何讨论或建议,将不胜感激! 项目树 RV32i目录包含一个用verilog编写的RISC-V CPU的Vivado项目,该项目实现了5级单问题处理器,支持31条基本指令。 RISC-V_Assembler目录包含一个汇编程序,用于将RISC-V指令汇编转换为十六进制格式,可以在Vivado仿真过程中通过$readmemh轻松将其直接直接加载到指令存储器中。 测试目录包含以RV32i程序集编写的基准。 Vec_Mul是一个基本的编码示例。 组装手册 该汇编器支持什么: R型: add s1, t1, t2 # s1 = t1 + t2 I型: slti s1, t1, 3 # if t1 < 3: s1 = 1
2022-06-14 14:06:46 292KB 汇编器
MARS MIPS汇编器和运行模拟器
2022-05-07 09:01:22 3.04MB 源码软件
1
1. 使用MASM-32bit为DOS和Windows编程: 先从多模式教学网上下载masm32v11r.zip,解压后运行install.exe,把32-bit MASM汇编器安装在d:\ 盘中。 1) 不要启动DOSBox,运行Windows的cmd.exe 开始DOS prompt命令行模式。先输入程序,存为hw.asm:
2022-05-05 11:47:10 275KB 汇编语言程序设计实验二MASM
1
MASM386.EXE,一款即开即用的x86-16汇编器,微软出品的唯一一款能在x86/x64平台上编译x86-16(8086)汇编语言的编译器,用法同普通MASM+LINK,省去安装虚拟机,DOSBox的烦恼,赶快下载用起来吧!
2022-04-30 20:00:51 107KB microsoft Windows 汇编器 MASM
1
masm a mips assembler 一个mips的汇编器 ##指令集: (rt,rs,rd:寄存器, imme:立即数, L:标记, shamt:左/右移次数) addi rt,rs,imme addiu rt,rs,imme andi rt,rs,imme beq rt,rs,L bgez rs,L bgtz rs,L blez rs,L bltz rs,L bne rs,L lh rt,imme(rs) lw rt,imme(rs) ori rt,rs,imme sh rt,imme(rs) slti rt,rs,imme sw rt,imme(rs) xori rt,rs,imme j L jal L add rd,rs,rt addu rd,rs,rt and rd,rs,rt div rs,rt jalr rs,rd jr rs mfhi rd mflo rd mthi
2022-04-20 16:32:46 120KB C++
1
用lex与yacc构造汇编器vasm及其指令模拟器vsim vasm及vsim源于Designing Digital Computer Systems with Verilog一书中定义的VeSPA(一个小型的RISC指令集的CPU)的指令集。 vasm通过两遍扫描的方式将VeSPA的汇编程序翻译为机器指令。 vsim模拟CPU的取指->译码->执行的循环完成机器指令的逐条执行,直到遇到停机或者运行时错误为止。 阅读及DIY该代码,你将深入理解并学会:1.两遍扫描的汇编器的工作原理,及其汇编器的设计和程序编写。2.lex与yacc工具在汇编器器和指令模拟器的构造过程中的应用。3.CPU的指令执行过程。4.对理解计算机体系结构有参考意义。5.提供了若干.asm汇编源程序样例以进行程序测试。 /////README file ############################################################## # README file for VeSPA assembler & instruction simulation # snallieATtomDOTcom # Sat Nov 15 13:44:43 CST 2014 ############################################################## 1.to build # make or # make clean; make then vasm and vsim be made 2.run vasm # ./vasm ./asm_example/count.org.asm then ./asm_example/count.org.hx produced 3. run vsim # ./vsim ./asm_example/count.org.hx snapshot of vsim as the following: [root@rh9 vas]# ./vsim ./asm_example/count.org.hx Designing Digital Computer Systems with Verilog, 2005 David J. Lilja and Sachin S. Sapatnekar http://www.arctic.umn.edu/vespa/ VeSPA Instruction Interactive Simulator. version 0.01 snallieATtomDOTcom, Thu May 2 05:40:37 CST 2013 built: Nov 15 2014 - 13:51:25 hint: 'h' or '?' for help CPU_endian = BIG [r]>> u 0 1c @0000 50000018 | LD r0 , 0x18 @0004 58400000 | LDI r1 , #0 @0008 08430001 | ADD r1 , r1 , #0x1 @000c 38020000 | CMP r1 , r0 @0010 46fffff4 | BLE 0x8 @0014 f8000000 | HLT @0018 0000000a | NOP @001c 00000000 | NOP [w]>> w a All watch registers enabled. [w]>> t 0004: 58400000 LDI r1 , #0 @0008 08430001 ADD r1 , r1 , #0x1 PC =00000008 N=0 Z=0 C=0 V=0 r0 =0000000a r1 =00000000 r2 =00000000 r3 =00000000 r4 =00000000 r5 =00000000 r6 =00000000 r7 =00000000 r8 =00000000 r9 =00000000 r10=00000000 r11=00000000 r12=00000000 r13=00000000 r14=00000000 r15=00000000 r16=00000000 r17=00000000 r18=00000000 r19=00000000 r20=00000000 r21=00000000 r22=00000000 r23=00000000 r24=00000000 r25=00000000 r26=00000000 r27=00000000 r28=00000000 r29=00000000 r30=00000000 r31=00000000 instructions_consumed = 2 [t]>> t 0008: 08430001 ADD r1 , r1 , #0x1 @000c 38020000 CMP r1 , r0 PC =0000000c N=0 Z=0 C=0 V=0 r0 =0000000a r1 =00000001 r2 =00000000 r3 =00000000 r4 =00000000 r5 =00000000 r6 =00000000 r7 =00000000 r8 =00000000 r9 =00000000 r10=00000000 r11=00000000 r12=00000000 r13=00000000 r14=00000000 r15=00000000 r16=00000000 r17=00000000 r18=00000000 r19=00000000 r20=00000000 r21=00000000 r22=00000000 r23=00000000 r24=00000000 r25=00000000 r26=00000000 r27=00000000 r28=00000000 r29=00000000 r30=00000000 r31=00000000 instructions_consumed = 3 [t]>> [u]>> ? Designing Digital Computer Systems with Verilog, 2005 David J. Lilja and Sachin S. Sapatnekar http://www.arctic.umn.edu/vespa/ VeSPA Instruction Interactive Simulator. version 0.01 snallieATtomDOTcom, Thu May 2 05:40:37 CST 2013 built: Nov 15 2014 - 13:51:25 hint: 'h' or '?' for help CPU_endian = BIG help menu (attention: command is case sensitive.): b: set or clear break point, syntax: b addr_in_hex or b c: continue the rest of the instructions d: dump memory, syntax: d or d from to e: edit memory, syntax: e or e addr_hex g: go through the program G: go to the breakpoint h/?: this help i: VeSPA Instruction Set o: do over again q/Q: quit r: dump or edit register, syntax: r or r rn (n=0..31) s: print current CPU state t: trace single step or n step, syntax: t [n>0] u: disassemble the program, syntax: u or u from to or u a x: examine memory, syntax: x or x addr_hex_list_deli_with_space w: watch register, syntax: w or w rn (n=0..31) or w rStart rEnd [?]>> 4. the prebuild file vasm.exe and vsim.exe are for run under the DOS prompt. 5. For more information please refer to the PDF file named Designing Digital Computer Systems with Verilog accompaning with this package, or visit http://www.arctic.umn.edu/vespa/ . Enjoy fun! /////misc.txt file vasm & vsim 1.分号起始单行注释 ADD R1,R2,R3 ; single line comment 2.支持C/C++的块注释及其单行注释语法 /* * C-style multiple line comment * second line of C-style block comment */ // C++ style comment 3.全部指令集 Mnem OP_dec OP_bin Syntax Example MachCode Operation ==== ====== ====== ====================== ================= ======== =============== NOP 0 00000 NOP NOP 00000000 ADD 1 00001 ADD rdst,rs1,rs2 ADD r2,r3,r5 08862800 r2 <- r3 + r5 ADD rdst,rs1,#immed16 ADD r6,r8,#0x62 09910062 r6 <- r8 + 0x62 SUB 2 00010 SUB rdst,rs1,rs2 SUB r2,r3,r5 10862800 r2 <- r3 - r5 SUB rdst,rs1,#immed16 SUB r6,r8,#0x62 11910062 r6 <- r8 - 0x62 OR 3 00011 OR rdst,rs1,rs2 OR r2,r3,r5 18862800 r2 <- r3 | r5 OR rdst,rs1,#immed16 OR r6,r8,#0x62 19910062 r6 <- r8 | 0x62 AND 4 00100 AND rdst,rs1,rs2 AND r2,r3,r5 20862800 r2 <- r3 & r5 AND rdst,rs1,#immed16 AND r6,r8,#0x62 21910062 r6 <- r8 & 0x62 NOT 5 00101 NOT rdst,rs1 NOT r2,r3 28860000 r2 <- ~r3 XOR 6 00110 XOR rdst,rs1,rs2 XOR r2,r3,r5 30862800 r2 <- r3 ^ r5 XOR rdst,rs1,#immed16 XOR r6,r8,#0x62 31910062 r6 <- r8 ^ 0x62 CMP 7 00111 CMP rs1,rs2 CMP r2,r3 38041800 r2 - r3 CMP rs1,#value CMP r2,#0x62 38050062 r2 - 0x62 Bxx 8 01000 Bxx -------- Bxx -------- JMP 9 01001 JMP rs1,#value JMP r16,#0x27 48200027 PC <- r16 + 0x27 JMPL 9 01001 JMPL rdst,rs1,#value JMPL r31,r16,#0x27 4FE10027 r31 <- PC; PC <- r16 + 0x27 LD 10 01010 LD rdst,LABEL LD r6,0x100 51800100 r6 <- Mem[0x100] LDI 11 01011 LDI rdst,#value LDI r6,#0x2d 5980002D r6 <- 0x2d LDX 12 01100 LDX rdst,rs1 LDX r6,r8 61900000 r6 <- Mem[r8] LDX rdst,rs1,#value LDX r6,r8,#0x2e 6190002E r6 <- Mem[r8+0x2e] ST 13 01101 ST LABEL,rst ST 0x100, r6 69800100 Mem[0x100] <- r6 STX 14 01110 STX rs1,rst STX r8,r6 71900000 Mem[r8] <- r6 STX rs1,#value,rst STX r8,#0x2e, r6 7190002E Mem[r8+0x2e] <- r6 MLT 15 01111 MLT rdst,rs1,rs2 MLT r2,r3,r5 78862800 r2 <- r3 * r5 MLT rdst,rs1,#immed16 MLT r6,r8,#0x62 79910062 r6 <- r8 * 0x62 HLT 31 11111 HLT HLT F8000000 BXX ----- MachCode Cond Condition ========= ======== ==== ====================================== BRA 0x100 400000FC 0000 always BNV 0x100 440000F8 1000 never BCC 0x100 408000F4 0001 carry clear (~C ) BCS 0x100 448000F0 1001 carry set (C) BVC 0x100 410000EC 0010 overflow clear (~V ) BVS 0x100 450000E8 1010 overflow set (V) BEQ 0x100 418000E4 0011 equal (Z) BNE 0x100 458000E0 1011 not equal (~Z) BGE 0x100 420000DC 0100 greater than or equal to (~N~V|NV) BLT 0x100 460000D8 1100 less than (N(~V)|(~N)V) BGT 0x100 428000D4 0101 greater than (~Z(~N~V|NV)) BLE 0x100 468000D0 1101 less than or equal to (Z|(N(~V)|(~N)V)) BPL 0x100 430000CC 0110 plus (positive) (~N ) BMI 0x100 470000C8 1110 minus (negative) (N) ========= ======== ==== ====================================== MOV rA,rB <=> ADD rA,rB,#0 ADD and SUB may affect Flags: NZCV ========= ======== ==== ====================================== alias of registers: %fp(frame pointer):r28, %sp(stack pointer):r29, %ln(link register):r30, %rv(return value):r31 4.汇编器伪指令(不区分大小写,伪指令均以.为前缀): .org .word .byte .alloc .align .string 1). .org 设定下条指令或者数据的起始地址,如: .org 0x200 ADD R1,R2,R3 ; 则ADD R1,R2,R3指令被汇编到内存的0x200地址处 .org 0x200 buf_data: .word 1,2,3 ; 则buf_data将被指定的内存地址为0x200, 2) .word 分配并初始化word长度(4字节)的内存,如: .org 0x200 buf_data: .word 1,2,3 ; 则buf_data将被指定的内存地址为0x200,从buf_data开始的3个字的内存被初始化为1,2,3 .org 0x300 .word 0x100 ; 则0x300地址处分配一个字的内存,并被初始化为0x100 3). .byte分配并初始化byte长度(1字节)的内存,如: .org 0x200 buf_data: .byte 1,2,3 ; 则buf_data将被指定的内存地址为0x200,从buf_data的3个字节的内存被初始化为1,2,3 4). .alloc N 分配N个字节的内存,不进行初始化,N为以个正整数,如: .org 0x400 .alloc 10 ;在0x400地址处分配10个字节的内存空间,不进行初始化。 5). .align N 内存对齐。N可以取2,4,8三个值 如: .align 4 ;若当前地址未能4字节对齐,则调整当前地址到随后的最近的一个4字节对齐地址上。 6). .string 定义一个C风格的字符串,不支持C的转义序列,如: my_str: .string "this is a C-style string" ;则在my_str所代表的内存处存放了一个字符串"this is a C-style string"。 ////sel_sort.asm 一个选择排序的示例程序 ; sel_sort.asm ; selection_sort algorithm ; snallieATtomDOTcom ; Time-stamp: <2014-11-15 00:29:52 root> ; int main() ; { ; int data[] = { 11, 2, 13, 4, -1, 15, 6, 7, 8, 9 }; ; int i, j; ; int min; ; int tmp; ; for (i = 0; i < 10; i++) { ; min = i; ; for (j = i; j < 10; j++) { ; if (data[j] < data[min]) { ; min = j; ; } ; } ; tmp = data[i]; ; data[i] = data[min]; ; data[min] = tmp; ; } ; for (j = 0; j < 10; j++) { ; printf("%d ", data[j]); ; } ; } .org 0 CNT .EQU 40 start: LDI r5 , #0 // j LDI r4 , #0 // i MOV r8 , r5 L1: CMP r4 , #CNT-4 BEQ quit LDX r7 , r5 , #data MOV r1 , r7 L2: LDX r7 , r5 , #data CMP r7 , r1 BGE next_j MOV r8 , r5 MOV r1 , r7 ; r1=Min next_j: ADD r5 , r5 , #0x4 CMP r5 , #CNT BEQ next_i BRA L2 next_i: LDX r9 , r8 , #data LDX r10, r4 , #data STX r8 , #data, r10 STX r4 , #data, r9 ADD r4 , r4 , #0x4 MOV r5 , r4 MOV r8 , r5 BRA L1 quit: HLT data: .word 11,2,13,4,-1,15,6,7,8,9
2022-04-15 16:54:38 1.46MB lex与yacc 汇编器 模拟器
1
matlab白化代码蓝牙低功耗基带 本文档适用于蓝牙低功耗(BLE)基带。 它已经在FPGA和ASIC平台上进行了合成,并带有测试平台。 项目历史 该项目基于EE290C @加州大学伯克利分校2018年秋季学期以及EE290C 2018年Spring学期的工作。 由Borivoje Nikolic教授教授的2018年秋季EE290C提供电路设计的高级主题:VLSI信号处理。 该课程采用了加州大学伯克利分校开发的开源硬件构造语言Chisel,以实现数字信号处理设计。 可以通过连接到Rocket Chip来验证设计。 我们的小组选择为最终项目实现BLE基带。 项目概况 BLE基带包括两个主要模块:数据包分配器(PA)和分解器(PDA),它们分别负责TX和RX端。 PA / PDA上有两个子模块CRC和(去)白化,以遵循蓝牙规范v5.0。 最终目标是实现完整的BLE基带环路链。 预期的BLE环路链图如下所示: 主要贡献者 2018秋季EE290C:段杰瑞,谢明英,郑亚伦 2018SpringEE290C:Richard Renn,Charles Huang 模组 PA: PDA :、 CRC
2022-04-06 16:58:06 1018KB 系统开源
1
AsmJit是一个完整的JIT(just In Time, 运行时刻)的针对C++语言的汇编器,可以生成兼容x86和x64架构的原生代码,不仅支持整个x86/x64的指令集(包括传统的MMX和最新的AVX2指令集),而且提供了一套可以在编译时刻进行语义检查的API。AsmJit的使用也没有任何的限制,适用于多媒体,虚拟机的后端,远程代码生成等等。 特性 完全支持x86/x64指令集(包括MMX,SSEx,AVX1/2,BMI,XOP,FMA3和FMA4); 底层次和高层次的代码生成概念; 内置检测处理器特性功能; 实现虚拟内存的管理,类似于malloc和free; 强大的日志记录和错误处理能力; 体积小,可直接嵌入项目,编译后的体积在150至200kb之间; 独立性强,不需要依赖其他任何的库(包括STL和RTTI )。
2022-04-06 00:45:36 1.01MB 代碼生成 汇编器
1