x86_64 Linux系统的GCC调用大会
我写了一个最小功能来测试我是否可以致电/链接C和x86_64汇编代码。 这是我的 main.c #include extern int test(int); int main(int argc, char* argv[…
我如何访问索引并将该索引传递给其他功能,以便我在其他功能中操纵该地址
string_location: db "Enter string location :", 0 fmt: db "%s", 0 ; The printf format, "\n",'0' fmt_n_end: db "%s ", 10, 0 ; The printf forma…
返回C++的两种AVX/AVX2 __M256D类型通过寄存器的函数调用
我是AVX/AVX2指令编程的新手,并且正在尝试优化代码的速度。按照较旧的期望,即通过参考的速度更快,我写了代码来执行此操作,但是最近更新了代码以通…
“当内部堆栈框架进行修改时,无需在功能末尾进行堆栈,但是在这种情况下正在修改它
这是一个简单的函数 #include int foo() { int a = 3; int b = 4; int c = 5; return a * b * c; } int main() { int a = foo(); } ,Foo()的组件看…
GLIBC SCANF分割故障从不对RSP的函数调用
编译下面的代码: global main extern printf, scanf section .data msg: db "Enter a number: ",10,0 format:db "%d",0 section .bss number resb 4 …
如何跳到x64和x32的英特尔语法中的内存位置
我将如何跳到Intel Assembly语法中的已知内存地址(X32和X64)。 我想我有64位语法。例如,如果在x64中,我想在 0x75767 上jmp到代码,并且我位于 000…
如何将此ATT组件转换为Intel语法?不使用寄存器而跳至非相关地址
我正在阅读这篇文章“ 汇编 - 挑战 - 偶然的核心地址 - using-using-using-registers ”。 我需要做他在这里的建议(跳到非相关地址而不使用寄存器)…
建立ARM64 Docker图像,其基本图像仅支持AMD64
我有一个带有M1的MacBook Pro,并且正在尝试测试是否可以使用仅通过指定-platform Linux/ARM64来支持AMD64的基本图像的ARM64图像。 我用摇杆/R-Ver:4…
x86-64的缓存填充大小是否应该为128个字节?
我从 。 从英特尔的沙桥开始,空间预摘要现在一次拉动64个字节缓存线,因此我们必须与128个字节对齐,而不是64个字节。。 来源: https://www.intel.c…
我对__atomic_seq_cst的理解正确吗? (i' d喜欢用它写一个哑光+ atomics)
为了好玩,我写了自己的线程库,由我和一两个朋友使用。我要写的第一件事是静音 ,看来我正在生成我想要的组件。 __ atomic_fetch_add 似乎生成锁定XA…
如何在X86组装中分配两个未签名的长64位值,然后将商和剩余的返回到C程序
在单独的C程序中,我已将4个参数传递给X86 ASM程序。 股息 除数 商指针 剩余指针 股息= 0xa 除数= 0x3 ,即10/3。 商应为3,其余应为1。 但是,我的商…
在从文件中重定向时,读取到newline字符后,读取nasm中的syscall不会停止
以下组装代码应该以两条不同的行读取两个单独的字符串。果然,当用户通过终端给出输入时,它确实可以正常工作: section .bss str1 resb 100 str2 res…
为什么IMUL用于乘以无符号数字?
我编制了以下程序: #include uint64_t usquare(uint32_t x) { return (uint64_t)x * (uint64_t)x; } 此分配为: 0: 89 f8 mov eax,edi 2: 48 0f af c…