Articles of 汇编

如何将Lua脚本编译为单个可执行文件,同时还能获得快速的LuaJIT编译器?

我如何将我的Lua脚本编译成单个可执行文件,同时获得LuaJIT的超快性能优势? 背景: 我的Lua脚本适用于我创build的Web应用程序(例如,托pipehttp://example.com ) 我目前的技术堆栈是NGINX(networking服务器),Lua / LuaJIT(检索dynamic内容的语言) 我有大约50+ .lua文件组成我的web应用程序(从模型/视图/控制器) FreeBSD 9操作系统 为了简单起见,我想将所有运行我的web应用程序的.lua脚本编译成一个可执行文件。 这是可能的和如何? Lua官员似乎有一个名为SRLua的图书馆 把我的.lua编译成单个可执行文件有什么不好的地方(例如性能会更糟,等等)?

如何计算在ARM程序中执行的指令数量?

我想通过计算指令来执行我想对应用程序进行的更改的性能度量。 但是,我不熟悉ARM的debugging接口知道如何做到这一点。 有甚至有这样的事情的接口? 如果有必要,我完全有能力潜入内核,但我的直觉告诉我这种事情应该在用户空间中实现。

linux nasm代码什么都不显示

我正在制作一个用户input号码的程序,它打印出从零到号码的所有号码。 它编译好,链接正常,运行时不返回任何错误,但它没有打印任何东西。 这里是代码: SECTION .data len EQU 32 SECTION .bss other resd len data resd len SECTION .text GLOBAL _start _start: nop input: ; This section gets the integer from the user mov eax, 3 ; } mov ebx, 1 ; } mov ecx, data ; } System_read call mov edx, len ; } int […]

源代码洞察中的汇编代码支持

有没有人试过在源代码洞察中浏览汇编语言文件(filename.s)? 我只是将整个Linux内核项目添加到源洞察,但它不支持任何程序集文件。

如何比较Gasm(Gnu Assembler)中的string?

我需要使用gasm来计算string中的空间数量。 所以,我写了简单的程序,但比较不起作用。 .section .data str: .string " TEst string wit h spaces \n" .section .text .globl _start _start: movl $0,%eax # %eax – amount of spaces movl $0,%ecx # Starting our counter with zero loop_start: cmpl $32,str(,%ecx,1) # Comparison (this is never true) jne sp incl %eax # Programm never goes there incl %ecx jmp […]

分段错误当我在Linux上运行使用Hard Float构build的Neon代码时

我有一个代码与霓虹灯assembly优化的一个function。 我用gcc构build它,并运行在Cortex A9(硬浮动图像)上。 当我build立一个非优化代码(纯C没有汇编)与硬浮选项,如:-mapc -march = armv7-a -mtune = cortex-a9 -mfloat-abi = hard -mfpu = neon,它工作正常。 当我介绍我的汇编代码,并用下列标志进行汇编:-march = armv7 -a -mfloat-abi = hard -mfpu = neon它构build得很好,但是出现了分段错误。 还有一点需要注意的是,如果我使用-mfloat-abi = softfp代替hard(和带有-static选项的链接)来构build程序集优化代码,则运行良好。 为什么汇编代码会造成Hard float问题? 我遇到了硬/软abi选项上的其他post,但是我没有find解决scheme,我的具体情况(C代码工作,但霓虹灯大会给分段错误) 编辑:董事会没有gdb,我通过gdb服务器远程尝试,但提出了其他连接问题。 所以我不能使用gdb进行debugging。 但是,我所做的debugging:只要我进入汇编函数,我推寄存器,然后分支到最后,再次popup寄存器。 它仍然给分段错误。 我可以推断,这不是一个特定的指示给予错误。 一些标志丢失在生成文件或其他forms和特定于硬浮点的程序集中的语法? 另外,当我使用armcc选项–fpu = vfpv3_d16构build库时,它仍然可以工作。 这是很难对付的吗? 所以我推断组合GCC +汇编代码+硬盘浮动是一个问题…请给你的build议,如果你曾经与这个/类似的组合。 编辑如果汇编代码中包含像MOV r0, r1或ADD r1, r2,r2这样的明确指令,则会运行该代码ADD r1, r2,r2但在出现与LDR r1, [r2]或mov r0, #0一样的任何常量或内存相关操作的情况下会出现分段错误。 […]

链接器如何确定.rodata节中某些数据的地址?

所以testing平台在Linux 32位上。 我用这个方法使用gcc生成一个quickSort的obj文件: gcc -S quickSort.c 生成的quickSort.o是一个可重定位的ELF: #file quickSort.o quickSort.o:ELF 32位LSB可重新定位,英特尔80386,版本1(SYSV),未剥离 然后我使用objdump来拆卸它: objdump -d quickSort.o 并查看生成的asm文件,我对此感到困惑: 51: b8 00 00 00 00 mov $0x0,%eax 56: 89 04 24 mov %eax,(%esp) 59: e8 fc ff ff ff call 5a <main+0x5a> 5e: c7 44 24 3c 00 00 00 movl $0x0,0x3c(%esp) 上面的代码是调用printf函数并打印出一个string,如果我编译quicksort.c到quicksort.s,它应该是这样的: movl $.LC0, %eax movl %eax, […]

如何readelf翻译入口点

我有一个精灵文件,当我使用readelf -h文件名时,我得到了入口点。 现在,让我说我想自己计算这个地址[使用汇编,但语言并不重要]。 我怎样才能做到这一点? 我知道入口点是从文件中的偏移量24开始的4个字节,但是我不知道如何将这个数据转换成地址。

Linux x86_64汇编套接字编程

大家好。 所以我在学汇编 而且按照我平常学习的步骤,我select了新的语言,我已经到了与汇编的networking。 其中,遗憾的是没有那么好,因为我已经在第0步失败了,这将是一个可以开始沟通的套接字。 汇编代码应该大致等于下面的C代码: #include <stdio.h> #include <sys/socket.h> int main(){ int sock; sock = socket(AF_INET, SOCK_STREAM, 0); } (让我们忽略它现在不closures套接字的事实。) 所以这就是我迄今所做的: 检查了手册 。 这意味着我需要做一个socketcall()这是很好,很好。 问题开始于它将需要一个int ,它描述了它应该做什么样的socketcall。 调用manpage对此没有什么帮助,因为它只描述: 在某些体系结构上(例如,x86-64和ARM),没有socketcall()系统调用; 而socket(2),accept(2),bind(2)等实际上是作为单独的系统调用来实现的。 然而,在系统调用的原始列表中没有这样的调用 – 据我所知, socket() , accept() , bind() , listen()等是来自libnet而不是来自内核的调用。 这让我非常困惑,所以我决定编译上面的C代码,并用strace检查它。 这产生了以下结果: 套接字(PF_INET,SOCK_STREAM,IPPROTO_IP)= 3 虽然这并没有让我更接近知道什么socket() 是否解释了它的参数。 对于女巫,我似乎没有find适当的文件(再次)。 我以为PF_INET , SOCK_STREAM , IPPROTO_IP将在<sys/socket.h>定义,但我的grep -ing似乎没有find任何使用。 所以我决定通过使用gdb与disass main来find值。 这给了以下输出: […]

NASM scanf未定义参考(LINUX)

我是新assembly。 我有代码的问题。 我正在尝试使用scanf创build简单的程序。 这是代码: global main extern printf extern scanf section .text section .data message: db "The result is = %d", 10, 0 request: db "Enter the number: ", 0 integer1: times 4 db 0 ; 32-bits integer = 4 bytes formatin: db "%d", 0 main: ; Ask for an integer push request call printf […]