Articles of x86 64

X86 64位汇编Linux'Hello World'连接问题

我试图跟进这个线程 ,不幸的是不能解决我的问题。 我试图运行的代码如下所示: ; File hello.asm section .data msg: db "Hello World!",0x0a,0 section .text global main extern printf main: push rbp mov rbp, rsp lea rdi, [msg] ; parameter 1 for printf xor eax, eax ; 0 floating point parameter call printf xor eax, eax ; returns 0 pop rbp ret 我的系统是debian stretch: $ uname […]

amd64 psABI在哪里?

AMD64 psABI曾经被x86-64.org托pipe。 我有一个pdf文件的副本,它明确地说: 体系结构规范可在网站http://www.x86-64.org/documentation上find 。 但http://www.x86-64.org已经很长一段时间了。 至less几个月。 有谁知道最新的PSABI可以从哪里拿走?

如何构buildnetty-transport-native-epoll-4.0.32.Final-linux-x86_64.jar?

我在netty中使用本地epoll传输,并能够从存储库下载netty-transport-native-epoll-4.0.32.jar。 但是我也需要netty-transport-native-epoll-4.0.32.Final-linux-x86_64.jar,但是无法在任何地方find它。 请让我知道在哪里下载这个jar,或者如何构build它。

Linux X86-64汇编和printf

我正在阅读一些Linux程序集手册,并发现使用printf()函数的想法。 我需要它为了debugging的原因以二进制forms输出寄存器值到terminal,但现在我试图简单地用文本来testing该function。 我卡住了,因为segfault,当我使用pushq而不是pushl。 我怎样才能改变这个程序输出string和二进制forms的寄存器? .data input_prompt: .string "Hello, world!" printf_format: .string "%5d " printf_newline: .string "\n" size: .long 0 .text .globl main main: pushq $input_prompt call printf movl $0, %eax ret 它由GCC编译为: gcc tmp.S -o tmp

在x86_64 Linux中重新部署一个2GB以上的程序的链接器错误?

我有一个用户程序,通常编译有一个入口点在0x400460 ,我不得不重新定位入口点在2GB的Linux内加载的共享库开始。 例如linux-vdso.so.1 => (0x00007fff109cd000) libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fcd195e6000) /lib64/ld-linux-x86-64.so.2 (0x00007fcd199af000) 我正在使用gcc命令行参数-Wl,-Ttext=0x80000000来指定.text segemnt的开始地址。 问题是,当我给这个参数超过2GB的地址时,我得到一个链接器错误是: gcc test.c -ggdb -Wl,-Ttext=0x80000000 -o test1 /usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 0 has invalid symbol index 10 /usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 1 has invalid symbol index 11 /usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 2 has invalid symbol index 2 /usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 3 has invalid symbol index […]

命令用.a文件编译c文件

我有几个.c文件和一个.a目标文件。 我应该使用什么命令与gcc编译到一个exe文件? 如果我们使用makefile,它将如何?

如何在CentOS Linux上检查GPU

build议在Linux上用命令lspci | grep VGAfindGPU lspci | grep VGA 。 它在Ubuntu上工作正常,但是当我尝试在CentOS上使用它时,它说lspci命令没有find。 我怎样才能在CentOS上查看GPU卡。 请注意,我不是机器的pipe理员,我只能从命令行远程使用它。 我打算使用GPU作为该机器上的GPGPU,但首先我需要检查它是否有一个。

我不明白为什么编译器给我错误的代码

我有以下C代码,这对我来说看起来非常正确。 但是,clang编译器(实际上gcc或任何其他C编译器)则认为不然。 typedef struct { struct timeval td_start; struct timeval td_end; } Timer; void startTimer( struct Timer* ptimer ) { gettimeofday( &(ptimer->td_start), NULL ); } void stopTimer( struct Timer* ptimer ) { gettimeofday( &(ptimer->td_end), NULL ); } 编译器给出以下waring&error消息。 任何想法这里有什么不对? ./timing.h:14:25: warning: declaration of 'struct Timer' will not be visible outside of this function [-Wvisibility] void […]

在uint128_t整数的上下文中对hexstring进行操作

标准Linux库函数strtoull是64位。 是否存在针对在uint128_t整数上运行的Linux x86_64环境的strtoX familyfunction的实现? 可能的原型: uint128_t strtoulll(const char *nptr, char **endptr, int base); 另外,如何使用printf / sprintf打印uint128_t整数?

如果ASLR被禁用,mmap是确定性的吗?

如果地址空间布局随机化(ASLR)被禁用,我们是否有确定性的mmap ? 通过确定性,我的意思是说,如果我用相同的input一次又一次地运行相同的应用程序,我会得到相同的地址由mmap返回? 我最感兴趣的是匿名的mmap。