在linux系统的setjmp.h库中,对jmp_buf进行了加密和解密,使用了mangle函数
*/static long int i64_ptr_mangle(long int p) {
long int ret;
asm(" mov %1, %%rax;\n"
" xor %%fs:0x30, %%rax;"
" rol $0x11, %%rax;"
" mov %%rax, %0;"
: "=r"(ret)
:
我正在尝试编写一个程序来找到asm中整数列表的最小值。以下是我到目前为止所拥有的:
.section .data
data_items:
.long 2,3,4,5,1,9,10 # set 10 as the sentinal value
.section text
.globl _start
_start:
# %ebx holds min
# %edi holds index (destination index)
# %eax current data item
movl $255, %ebx
我在delphi中的应用程序wriiten中有这个汇编程序函数,它在windows .But上执行得很好,我的要求是在Linux上迁移我的应用程序时在Linux上执行它。在Linux中编译这个函数时,我得到了错误:“不支持的语言特性:'ASM'”。
任何人都可以帮助或建议如何在c++或delphi中实现它,这样它就可以在Linux上工作。分享我的代码:
type
PVersionizedPointer = ^TVersionizedPointer;
TVersionizedPointer = packed record
Ver : NativeInt;
我想在汇编器里发出嘟嘟声。
喜欢
beep()
这个是可能的吗?
我已经尝试使用带有钟形符号的sysCall写入。但它什么也做不了。
我使用Linux-64-Nasm汇编程序,并且,因为我正在构建编译器,所以我不想使用C库。
section .data
cmp_BLANK: db 0x0a
cmp_interr: db "error, You have typed in a non-Integer Character!", 0x0a
cmp_interrlen: equ $-cmp_interr
cmp_buffer: times 9 db 0x00
cmp_beep: db
这是一个我不知道从哪里开始的领域。我正在尝试编译一个使用G3Dlite的二进制文件。我已经遇到了一个未定义的"__decl“,因为在platform.h中没有定义,所以我必须定义它。在此之后,编译器在出现以下错误时停止:
./dep/include/g3dlite/G3D/AtomicInt32.h:124:44: error: impossible constraint in ‘asm’
第124行在此函数中:
/** Returns zero if the result is zero after decrement, non-zero otherwise.*/
int32 de
我试图计算表达式A * B + ( A + B ) / ( A - B ),其中A和B是用户输入的整数。我正在使用linux内核上的ALong32库。
%include "along32.inc"
section .data
msg1 db 'Enter A: ', 0
msg2 db 'Enter B: ', 0
msg3 db 'Result: ' , 0
err db 'Error: cannot divide by 0', 0
A
我想数一数一个数组中有多少个数字。
首先,我有一个用C lenguaje编写的代码(工作正常):
int popcount2(int* array, int len){
int i;
unsigned x;
int result=0;
for (i=0; i<len; i++){
x = array[i];
do{
result+= x & 0x1;
x>>= 1;
} while(x);
}
return result;
}
现在,我需要