不知何故,当我git init在大约一个月前编辑我的最新项目时,我在目录中运行了一个高于项目根目录的目录.
所以我的存储库位于./project目录而不是./project/my-new-project目录中.我不知道我之前没有意识到这个问题,但直到现在我才从未找过.git目录.
有没有办法,没有杀死我的项目,将存储库移动到正确的目录,然后告诉git项目的新基础是什么?只是移动目录不起作用.Git认为所有文件都已删除.
我承认这个问题的答案可能是“一些非常具体的魔法”,但我对在这里观察到的情况感到有点震惊。我想知道是否有人了解这些类型的优化是如何工作的。我发现编译器的设计非常有趣,我真的无法想象它是如何工作的。我确信答案就在 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)] / …
来自维基百科:
在计算中,红色区域是函数堆栈帧中超出返回地址的固定大小区域,该区域不被该函数保留.被调用函数可以使用红色区域来存储局部变量,而无需修改堆栈指针的额外开销.中断/异常/信号处理程序不会修改此内存区域.System V使用的x86-64 ABI要求一个128字节的红色区域,它直接在返回地址之后开始并包含函数的参数.OpenRISC工具链假设一个128字节的红色区域.
超出%rsp指向的位置的128字节区域被认为是保留的,不应被信号或中断处理程序修改.因此,函数可以将此区域用于函数调用不需要的临时数据.特别是,叶子函数可以将这个区域用于它们的整个堆栈帧,而不是调整序言和尾声中的堆栈指针.这个区域被称为红区.
鉴于这两个引号,堆叠的返回地址上方或堆叠的返回地址下方的红色区域 是?
由于这个红色区域是相对的RSP,它是否向下push移动并且每个区域向上移动pop?
在下面突出显示的行中更改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
我正在使用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) 所以,我的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返回其原始位置?
旧标题: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,但我找不到太多关于它的教程。 …
我正在关注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) 我正在尝试将我编写的汇编程序转换为无 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 位的常量。
我使用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)