小编Sep*_*and的帖子

我的Git存储库位于错误的根目录中.我可以搬吗?(../ 代替 ./)

不知何故,当我git init在大约一个月前编辑我的最新项目时,我在目录中运行了一个高于项目根目录的目录.

所以我的存储库位于./project目录而不是./project/my-new-project目录中.我不知道我之前没有意识到这个问题,但直到现在我才从未找过.git目录.

有没有办法,没有杀死我的项目,将存储库移动到正确的目录,然后告诉git项目的新基础是什么?只是移动目录不起作用.Git认为所有文件都已删除.

git

112
推荐指数
5
解决办法
7万
查看次数

clang 如何生成平方和的非循环代码?

我承认这个问题的答案可能是“一些非常具体的魔法”,但我对在这里观察到的情况感到有点震惊。我想知道是否有人了解这些类型的优化是如何工作的。我发现编译器的设计非常有趣,我真的无法想象它是如何工作的。我确信答案就在 clang 源代码中的某个地方,但我什至不知道该在哪里查找。

我是大学课程的助教,最近有人要求我帮助解决一个简单的家庭作业问题。这让我走上了一条有趣的道路......

问题很简单:在 x86_64 汇编中,编写一个给定(正)整数 n 返回的函数1^2 + 2^2 + 3^2 + ... + n^2

我决定尝试一下,在帮助他们在 x86_64 汇编中编写此代码后,我(拥有一台 M1 macbook)决定看看是否可以在 arm64 汇编中创建一个不错的解决方案。我想出了一个相对简单直接的解决方案:

_sum_squares:
    mov x1, x0  ; Do multiplication from x1
    mov x0, xzr ; Clear x0

    Lloop:
        ; x0 <-- (x1 * x1) + x0
        madd x0, x1, x1, x0

        ; Loop until x1 == 0
        subs x1, x1, #1
        bne Lloop

    ret
Run Code Online (Sandbox Code Playgroud)

(我希望有某种很好的方法可以--x1 == 0在一条指令中进行分支,但我想不出任何方法)

注意:任何基础数论课程中都有一个简单的公式,即[n(n + 1)(2n + 1)] / …

optimization assembly llvm clang arm64

45
推荐指数
2
解决办法
3298
查看次数

x86-64上的红色区域究竟在哪里?

来自维基百科:

在计算中,红色区域是函数堆栈帧中超出返回地址的固定大小区域,该区域不被该函数保留.被调用函数可以使用红色区域来存储局部变量,而无需修改堆栈指针的额外开销.中断/异常/信号处理程序不会修改此内存区域.System V使用的x86-64 ABI要求一个128字节的红色区域,它直接在返回地址之后开始并包含函数的参数.OpenRISC工具链假设一个128字节的红色区域.

System V x86-64 ABI:

超出%rsp指向的位置的128字节区域被认为是保留的,不应被信号或中断处理程序修改.因此,函数可以将此区域用于函数调用不需要的临时数据.特别是,叶子函数可以将这个区域用于它们的整个堆栈帧,而不是调整序言和尾声中的堆栈指针.这个区域被称为红区.

  • 鉴于这两个引号,堆叠的返回地址上方或堆叠的返回地址下方红色区域 是?

  • 由于这个红色区域是相对的RSP,它是否向下push移动并且每个区域向上移动pop

assembly x86-64 abi calling-convention red-zone

20
推荐指数
2
解决办法
2331
查看次数

在 Coffee Lake (Skylake) 上进行 bigint 乘法的第一步中,ADD 比 ADC 慢

在下面突出显示的行中更改add为可adc显着提高性能。我觉得这很违反直觉,因为add有更多的端口要执行,而且它不依赖于标志。

CPU:英特尔 i7-9750H(Coffee Lake)。
UOPS_ISSUED.ANY add= ~2.87 uops /cycle。
UOPS_ISSUED.ANY adc= ~3.47 uops /cycle。
在这两种情况下,退休插槽是 98.5% 的 uops。

它反映在基准时间上,add版本要慢得多。

如果有人能帮助我理解为什么add变慢,我将不胜感激?我可以提供更多指标,只是不知道要寻找什么。

# Code to multiply large integer by a qword.
# RSI = input large integer (qword array).
# RDI = output large integer (qword array).
# RDX = qword to multiply the large integer by.
# ECX = number of 32-byte blocks to process (i.e. qwords …
Run Code Online (Sandbox Code Playgroud)

performance x86 assembly cpu-architecture micro-optimization

10
推荐指数
1
解决办法
205
查看次数

是否有可能在x86汇编中乘以mul的立即数?

我正在使用DosBox模拟器学习x86的汇编.我正在尝试执行乘法.我不知道它是如何工作的.当我写下面的代码时:

mov al, 3
mul 2
Run Code Online (Sandbox Code Playgroud)

我收到一个错误.虽然,在我使用的参考文献中,它在乘法中说,它假设AX始终是占位符,因此,如果我写:

mul, 2
Run Code Online (Sandbox Code Playgroud)

它将al值乘以2.但它不适用于我.

当我尝试以下内容时:

mov al, 3
mul al,2
int 3
Run Code Online (Sandbox Code Playgroud)

我在ax中得到了结果9.请参阅此图片以获得澄清: 在此输入图像描述

另一个问题:我可以直接使用内存位置吗?例:

mov si,100
mul [si],5
Run Code Online (Sandbox Code Playgroud)

x86 assembly multiplication

9
推荐指数
1
解决办法
4万
查看次数

如何防止CSS动画回到原来的位置?

所以,我的CSS在3秒后将div移动到-40px.执行此操作后,div将移回其原始位置.这是代码:

#jsAlert {
    width: 100%;
    height: 40px;
    position: absolute;
    left: 0px;
    top: 0px;
    background-color: rgba(0, 0, 0, 0.6);
    animation:mymove 3s;
    animation-delay: 3s;

    /*Safari and Chrome*/
    -webkit-animation: mymove 2s;
    -webkit-animation-delay: 2s;
}

@keyframes mymove {
    from {top: 0px;}
    to {top: -40px;}
}

@-webkit-keyframes mymove /*Safari and Chrome*/
{
    from {top: 0px;}
    to {top: -40px;}
}
Run Code Online (Sandbox Code Playgroud)

如何防止div返回其原始位置?

html css css3 css-animations

8
推荐指数
1
解决办法
9357
查看次数

iText7 将 HTML 转换为 PDF“System.NullReferenceException”。

旧标题:iTextSharp 将 HTML 转换为 PDF“文档没有页面。”

我正在使用 iTextSharp 和 xmlworker 将 html 从视图转换为 ASP.NET Core 2.1 中的 PDF

我尝试了在网上找到的许多代码片段,但都生成了异常:

该文档没有页面。

这是我当前的代码:

public static byte[] ToPdf(string html)
{
    byte[] output;
    using (var document = new Document())
    {
        using (var workStream = new MemoryStream())
        {
            PdfWriter writer = PdfWriter.GetInstance(document, workStream);
            writer.CloseStream = false;
            document.Open();
            using (var reader = new StringReader(html))
            {
               XMLWorkerHelper.GetInstance().ParseXHtml(writer, document, reader);
               document.Close();
               output = workStream.ToArray();
            }
        }
   }
   return output;
}
Run Code Online (Sandbox Code Playgroud)

更新1

感谢 @Bruno Lowagie 的建议,我升级到了 iText7 和 pdfHTML,但我找不到太多关于它的教程。 …

pdf itext xmlworker .net-core itext7

8
推荐指数
1
解决办法
5236
查看次数

为什么 printf 仍然可以在 RAX 小于 XMM 寄存器中 FP 参数数量的情况下工作?

我正在关注Linux 64系统中的《开始x64汇编编程》一书。我正在使用 NASM 和 gcc。
在关于浮点运算的章节中,本书指定了以下用于添加 2 个浮点数的代码。在本书和其他在线资源中,我读到寄存器 RAX 根据调用约定指定要使用的 XMM 寄存器的数量。
书中的代码如下:

extern printf
section .data
num1        dq  9.0
num2        dq  73.0
fmt     db  "The numbers are %f and %f",10,0
f_sum       db  "%f + %f = %f",10,0

section .text
global main
main:
    push rbp
    mov rbp, rsp
printn:
    movsd xmm0, [num1]
    movsd xmm1, [num2]
    mov rdi, fmt
    mov rax, 2      ;for printf rax specifies amount of xmm registers
    call printf

sum:
    movsd xmm2, [num1]
    addsd xmm2, [num2]
printsum:
    movsd …
Run Code Online (Sandbox Code Playgroud)

linux assembly x86-64 nasm calling-convention

8
推荐指数
1
解决办法
275
查看次数

无 NULL 的 shellcode

我正在尝试将我编写的汇编程序转换为无 NULL 的 shellcode。

但是,我不确定如何执行某些说明。
其中一些(采用英特尔语法)包括:

push 0x1000
Run Code Online (Sandbox Code Playgroud)

mov BYTE [eax],0x31
Run Code Online (Sandbox Code Playgroud)

我想避免使用数千inc eax条指令。我在想也许可以用xor-ing 值来一些创造性的东西,其次,也许可以设置一个标志来使其只需要 8 位的常量。

null x86 assembly instruction-set shellcode

7
推荐指数
1
解决办法
1128
查看次数

Xamarin Android:如何从资产文件夹共享PDF文件?通过WhatsApp我得到的消息是你选择的文件不是文件

我使用Xamarin Android.我有一个PDF文件存储在Xamarin Android的Assets文件夹中.

在此输入图像描述

我想在WhatsApp中分享这个文件,但收到的消息是:

您选择的文件不是文档.

在此输入图像描述

我试过两种方法:

这是第一种方式

var SendButton = FindViewById<Button>(Resource.Id.SendButton);
SendButton.Click += (s, e) =>

                {
                ////Create a new file in the exteranl storage and copy the file from assets folder to external storage folder
                Java.IO.File dstFile = new Java.IO.File(Environment.ExternalStorageDirectory.Path + "/my-pdf-File--2017.pdf");
                dstFile.CreateNewFile();

                var inputStream = new FileInputStream(Assets.OpenFd("my-pdf-File--2017.pdf").FileDescriptor);
                var outputStream = new FileOutputStream(dstFile);
                CopyFile(inputStream, outputStream);

                //to let system scan the audio file and detect it
                Intent intent = new Intent(Intent.ActionMediaScannerScanFile);
                intent.SetData(Uri.FromFile(dstFile));
                this.SendBroadcast(intent);

                //share the Uri of the …
Run Code Online (Sandbox Code Playgroud)

pdf share android-intent xamarin.android whatsapp

7
推荐指数
1
解决办法
1599
查看次数